我有點理解爲什麼會發生這種情況,但並不完全。我有一個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