foreach (DictionaryEntry de in temp)
{
if (!(de.Value is WebControl))
{
ControlList.Remove(de.Key);
}
}
由此可见,应该是深拷贝才对。但注释写的是shallow copy ,不解中。。。
12 个解决方案
#1
自已顶 个
#2
你是怎么看是的呢?我却看是出浅
拷贝
拷贝
#3
ControlList.Remove(de.Key); 如果不出错,说明什么问题?
#4
http://www.siruo.net.cn/pubnews/HTML/785.html
#5
恩
#6
未了说明什么?
#7
以上代码是不出错的,是对的。如果是浅拷贝,就应该就是指的同一地址吧,在foreach中肯定会出错的呀
#8
浅拷贝也不会指向同一个地址,只是指向一个引用。因为原来的HashTable每一个Key都有一个引用
而如果是一个person
大家都去引用这个person
则就会出错了。
而如果是一个person
大家都去引用这个person
则就会出错了。
#9
Clone是浅拷贝 Copy是深拷贝
#10
object 难道有默认实现的 Clone 方法?
实现 IClonable.Clone 一般是为了深拷贝,但是怎么 深,是由实现着决定的!
object.MemberwiseClone 是浅拷贝
实现 IClonable.Clone 一般是为了深拷贝,但是怎么 深,是由实现着决定的!
object.MemberwiseClone 是浅拷贝
#11
错了,是浅拷贝。打个比喻,要是你住在一栋大厦的一间房,然后将大厦炸掉,当然你的房子也给炸掉了。浅拷贝有引用地址,而引用的地址指向实际地址,因此删掉引用必然会删除实际地址的。
#12
哦,我明白了,都是引用。。。
#1
自已顶 个
#2
你是怎么看是的呢?我却看是出浅
拷贝
拷贝
#3
ControlList.Remove(de.Key); 如果不出错,说明什么问题?
#4
http://www.siruo.net.cn/pubnews/HTML/785.html
#5
恩
#6
未了说明什么?
#7
以上代码是不出错的,是对的。如果是浅拷贝,就应该就是指的同一地址吧,在foreach中肯定会出错的呀
#8
浅拷贝也不会指向同一个地址,只是指向一个引用。因为原来的HashTable每一个Key都有一个引用
而如果是一个person
大家都去引用这个person
则就会出错了。
而如果是一个person
大家都去引用这个person
则就会出错了。
#9
Clone是浅拷贝 Copy是深拷贝
#10
object 难道有默认实现的 Clone 方法?
实现 IClonable.Clone 一般是为了深拷贝,但是怎么 深,是由实现着决定的!
object.MemberwiseClone 是浅拷贝
实现 IClonable.Clone 一般是为了深拷贝,但是怎么 深,是由实现着决定的!
object.MemberwiseClone 是浅拷贝
#11
错了,是浅拷贝。打个比喻,要是你住在一栋大厦的一间房,然后将大厦炸掉,当然你的房子也给炸掉了。浅拷贝有引用地址,而引用的地址指向实际地址,因此删掉引用必然会删除实际地址的。
#12
哦,我明白了,都是引用。。。