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