2,是不是实现了ICloneable接口就可以使用深拷贝 ?
3,那些对象是实现了ICloneable接口?
HASHTABLE ?
11 个解决方案
#1
1. 需要的时候
2. ICloneable 是由各个类自己实现的。至于是不是真的是深拷贝,只有天知道了。
3. 查MSDN
2. ICloneable 是由各个类自己实现的。至于是不是真的是深拷贝,只有天知道了。
3. 查MSDN
#2
浅拷贝会跟着原来的变
#3
1.什么时候用深拷贝
当你发现计算机所理解的copy不能表达你真实的想法的时候,比如说你想copy一下Bill Gates,但在copy的时候把他的银行卡也copy过来了,注意,你copy的只是个银行卡,所以就会发生不该发生的事情,任何一个Bill银行帐上的money增加和减少都会影响另一个,而如果某个Bill发生了销户这件事的话,另一个的卡号就肯定不能用了,在C++中出现这个问题,往往是copy的对象中包括另一个对象的指针,而在C#中则是你想copy的对象包括了其他对象的引用,那么这个其他对象一旦改变,会影响源对象和copy后的对象,这个时候,就需要我们手工完成深拷贝的工作了
当你发现计算机所理解的copy不能表达你真实的想法的时候,比如说你想copy一下Bill Gates,但在copy的时候把他的银行卡也copy过来了,注意,你copy的只是个银行卡,所以就会发生不该发生的事情,任何一个Bill银行帐上的money增加和减少都会影响另一个,而如果某个Bill发生了销户这件事的话,另一个的卡号就肯定不能用了,在C++中出现这个问题,往往是copy的对象中包括另一个对象的指针,而在C#中则是你想copy的对象包括了其他对象的引用,那么这个其他对象一旦改变,会影响源对象和copy后的对象,这个时候,就需要我们手工完成深拷贝的工作了
#4
2.是不是实现了ICloneable接口就可以使用深拷贝 ?
在C#中可以使用MemberwiseClone()方法来实现浅copy(Java中好像是clone()),也可以执行—个接口ICloneable以标准的方式来进行深拷贝。要实现这个接口,就必须实现ICloneable包含的一个方法Clone()(返回类型是System.Object),这个方法应该是我们自己完成实现的,原因很简单,计算机并不知道你打算进行怎么的copy
在C#中可以使用MemberwiseClone()方法来实现浅copy(Java中好像是clone()),也可以执行—个接口ICloneable以标准的方式来进行深拷贝。要实现这个接口,就必须实现ICloneable包含的一个方法Clone()(返回类型是System.Object),这个方法应该是我们自己完成实现的,原因很简单,计算机并不知道你打算进行怎么的copy
#5
1,什么情况下使用深拷贝?
你需要改变对象的内容但又要保留原有对象的内容
2,是不是实现了ICloneable接口就可以使用深拷贝 ?
谁实现谁知道
3,那些对象是实现了ICloneable接口?
建议查MSDN
你需要改变对象的内容但又要保留原有对象的内容
2,是不是实现了ICloneable接口就可以使用深拷贝 ?
谁实现谁知道
3,那些对象是实现了ICloneable接口?
建议查MSDN
#6
3,那些对象是实现了ICloneable接口?
建议查MSDN,自己解决
建议查MSDN,自己解决
#7
从内存中去理解。浅拷贝只是拷贝变量或者对象的地址,深拷贝就是对整个对象或者变量的复制。
#8
观望
#9
NogamesNow() 说的是对的。
一个对象中如果全部都是值数据,就无所谓深浅复制的问题。
只有当对象中包含引用数据时,浅复制是这样的:string s=strOld;
深复制是这样的:string s=(string)strOld.Clone();
浅复制是“新人喝老酒”,老酒变了新人喝的酒也变了。
深复制是“新人喝新酒”,老酒变了不影响新酒。
ICloneable接口只是形式,重点在于实现的过程。
一个对象中如果全部都是值数据,就无所谓深浅复制的问题。
只有当对象中包含引用数据时,浅复制是这样的:string s=strOld;
深复制是这样的:string s=(string)strOld.Clone();
浅复制是“新人喝老酒”,老酒变了新人喝的酒也变了。
深复制是“新人喝新酒”,老酒变了不影响新酒。
ICloneable接口只是形式,重点在于实现的过程。
#10
浅拷贝就是拷贝了一个引用,深拷贝就是拷贝了一个副本
#11
实现不行,用C++去模似深拷贝与浅拷贝,应该会明白原理了。
#1
1. 需要的时候
2. ICloneable 是由各个类自己实现的。至于是不是真的是深拷贝,只有天知道了。
3. 查MSDN
2. ICloneable 是由各个类自己实现的。至于是不是真的是深拷贝,只有天知道了。
3. 查MSDN
#2
浅拷贝会跟着原来的变
#3
1.什么时候用深拷贝
当你发现计算机所理解的copy不能表达你真实的想法的时候,比如说你想copy一下Bill Gates,但在copy的时候把他的银行卡也copy过来了,注意,你copy的只是个银行卡,所以就会发生不该发生的事情,任何一个Bill银行帐上的money增加和减少都会影响另一个,而如果某个Bill发生了销户这件事的话,另一个的卡号就肯定不能用了,在C++中出现这个问题,往往是copy的对象中包括另一个对象的指针,而在C#中则是你想copy的对象包括了其他对象的引用,那么这个其他对象一旦改变,会影响源对象和copy后的对象,这个时候,就需要我们手工完成深拷贝的工作了
当你发现计算机所理解的copy不能表达你真实的想法的时候,比如说你想copy一下Bill Gates,但在copy的时候把他的银行卡也copy过来了,注意,你copy的只是个银行卡,所以就会发生不该发生的事情,任何一个Bill银行帐上的money增加和减少都会影响另一个,而如果某个Bill发生了销户这件事的话,另一个的卡号就肯定不能用了,在C++中出现这个问题,往往是copy的对象中包括另一个对象的指针,而在C#中则是你想copy的对象包括了其他对象的引用,那么这个其他对象一旦改变,会影响源对象和copy后的对象,这个时候,就需要我们手工完成深拷贝的工作了
#4
2.是不是实现了ICloneable接口就可以使用深拷贝 ?
在C#中可以使用MemberwiseClone()方法来实现浅copy(Java中好像是clone()),也可以执行—个接口ICloneable以标准的方式来进行深拷贝。要实现这个接口,就必须实现ICloneable包含的一个方法Clone()(返回类型是System.Object),这个方法应该是我们自己完成实现的,原因很简单,计算机并不知道你打算进行怎么的copy
在C#中可以使用MemberwiseClone()方法来实现浅copy(Java中好像是clone()),也可以执行—个接口ICloneable以标准的方式来进行深拷贝。要实现这个接口,就必须实现ICloneable包含的一个方法Clone()(返回类型是System.Object),这个方法应该是我们自己完成实现的,原因很简单,计算机并不知道你打算进行怎么的copy
#5
1,什么情况下使用深拷贝?
你需要改变对象的内容但又要保留原有对象的内容
2,是不是实现了ICloneable接口就可以使用深拷贝 ?
谁实现谁知道
3,那些对象是实现了ICloneable接口?
建议查MSDN
你需要改变对象的内容但又要保留原有对象的内容
2,是不是实现了ICloneable接口就可以使用深拷贝 ?
谁实现谁知道
3,那些对象是实现了ICloneable接口?
建议查MSDN
#6
3,那些对象是实现了ICloneable接口?
建议查MSDN,自己解决
建议查MSDN,自己解决
#7
从内存中去理解。浅拷贝只是拷贝变量或者对象的地址,深拷贝就是对整个对象或者变量的复制。
#8
观望
#9
NogamesNow() 说的是对的。
一个对象中如果全部都是值数据,就无所谓深浅复制的问题。
只有当对象中包含引用数据时,浅复制是这样的:string s=strOld;
深复制是这样的:string s=(string)strOld.Clone();
浅复制是“新人喝老酒”,老酒变了新人喝的酒也变了。
深复制是“新人喝新酒”,老酒变了不影响新酒。
ICloneable接口只是形式,重点在于实现的过程。
一个对象中如果全部都是值数据,就无所谓深浅复制的问题。
只有当对象中包含引用数据时,浅复制是这样的:string s=strOld;
深复制是这样的:string s=(string)strOld.Clone();
浅复制是“新人喝老酒”,老酒变了新人喝的酒也变了。
深复制是“新人喝新酒”,老酒变了不影响新酒。
ICloneable接口只是形式,重点在于实现的过程。
#10
浅拷贝就是拷贝了一个引用,深拷贝就是拷贝了一个副本
#11
实现不行,用C++去模似深拷贝与浅拷贝,应该会明白原理了。