我有点理解为什么会发生这种情况,但并不完全。我有一个Shared
(Static
)可变基类,声明如下所示:通过值实例化本地变量?
Public Shared myVar As New MyObject(arg1, arg2)
在派生类的方法,我设置像这样的局部变量:
Dim myLocalVar As MyObject = myVar
现在,当我执行类似myLocalVar.Property1 += value
的操作,Property1
中的值仍然存在于该方法的下一个调用中!我想我得到为什么它会发生; myVar
是通过引用而不是按值设置的,但我从来没有遇到过像这样的事情。有没有什么办法(除了我的解决方法,就是使用属性值myVar
创建一个新对象)按值创建myLocalVar
?
是的,这是我的解决方法,实际上。 “深”和“浅”复制之间有什么区别?感谢这非常知识的答案! – Jason 2010-01-07 04:28:31
浅拷贝意味着只复制对象的“顶级”属性。深层复制将意味着复制顶层属性并挖掘属性的子属性等。 – Eilon 2010-01-07 04:39:56
@Jason:Brad Abrams在这里有一个很好的解释:http://blogs.msdn.com/brada/ archive/2003/04/09/49935.aspx“Deep-copy复制克隆对象和对象引用的所有对象,递归直到图中的所有对象都被复制。非深度复制(被称为”浅“if只有顶级参考被复制)可能不会做任何事,或者是深层复制的一部分。“ – 2010-01-07 05:14:12