1
我正在爲不可序列化的對象寫一個克隆函數。對於大多數對象,我不在乎它們是否被淺拷貝,因爲我不會對它們進行任何更改。C#重置屬性
我從MemberwiseClone開始,它將所有的值和像配置字典這樣的很少的對象複製過來,但它們都是指針。
EAVEntity newClone = (EAVEntity) this.MemberwiseClone();
newClone.EntityStorageID = Guid.NewGuid();
newClone.Controls.Clear();
那麼如何重置一個指針,以便我可以讓它們不指向相同的位置?
我試過用 newClone.EntityStorageID = new Guid() 但它仍然更新this.EntityStorageID。我會嘗試null。 – Jeff 2010-01-20 20:22:59
Nope null(newClone.EntityStorageID = null;)未能成爲非空類型。我的解決方案可能是手工完成整個克隆(一次一個屬性),但我仍然對如何通過引用設置對象感到好奇。 – Jeff 2010-01-20 20:31:13
如果您將GUID作爲GUID的一種類型? (VB中爲空值),這將允許你傳遞null。 GUID是一個值類型,而可爲空的類型,字符串和類是引用類型,並且會遇到您正在討論的問題。所以你可以創建一個可爲空的類或者具有GUID屬性的包裝類。 –
2010-01-20 20:35:20