我的問題涉及在C#中使用對象。我想我明白髮生了什麼,但我想明白爲什麼。由於我不會涉及的原因,我想用當前數據(當前狀態)創建對象的臨時副本。所以我想我可以創建一個新對象,將它分配給原始對象,然後更改原始對象。那時我會有兩個不同狀態的物體。但是,發生的事情是複製的對象看起來和第一個完全一樣。下面是一些代碼來說明:爲什麼我的對象是一個指針?
Order o1 = new Order();
o1.property1 = "test 1";
Order o2 = new Order();
o2 = o1;
o1.property1 = "test 2";
但在這段代碼結束,無論O1和O2都property1設置爲「測試2」。我想我意識到所有的對象都只是指針,所以如果你改變它,它會改變另一個,但我不明白爲什麼這是,或者它爲什麼有用。我在這裏錯過了一些基本的東西嗎?另外,完成我想要做什麼的最好方法是什麼?即:存儲對象的狀態,進行更改,然後在必要時恢復。希望這是有道理的。
請參閱http://msdn.microsoft.com/en-us/library/t63sy5hs(v=vs.80).aspx解釋這一點的文檔。 – David 2013-03-05 22:53:37
您需要了解引用類型與值類型。當你將o1分配給o2時,類是引用類型,你實際上將一個引用分配給o1,因此o1和o2都指向內存中的相同位置。這就是C#如何與引用類型(即類)一起工作。 – 2013-03-05 22:58:59
謝謝Stan。關鍵在於賦值o2 = o1只是將引用賦值給對象,而不是賦值給它。 – bardogodspeed 2013-03-05 23:05:02