假设我有一个对象ItemVO,其中已经分配了一堆属性.
例如:
例如:
ItemVO originalItemVO = new ItemVO(); originalItemVO.ItemId = 1; originalItemVO.ItemCategory = "ORIGINAL";
我想通过使用以下方式创建另一个副本:
duplicateItemVO = originalItemVO;
然后使用duplicateItemVO并更改其属性,不改变originalItemVO:
// This also change the originalItemVO.ItemCategory which I do not want. duplicateItemVO.ItemCategory = "DUPLICATE"
如何才能实现这一点,而不用改变ClassVO的类?
谢谢
public class ItemVO { public ItemVO() { ItemId = ""; ItemCategory = ""; } public string ItemId { get; set; } public string ItemCategory { get; set; } }
解决方法
您将需要构建一个新的类的实例,而不仅仅是分配变量:
duplicateItemVO = new ItemVO { ItemId = originalItemVO.ItemId,ItemCategory = originalItemVO.ItemCategory };
当您处理引用类型(任何类)时,只需分配一个变量即可创建对原始对象的引用的副本.因此,在该对象内设置属性值也会更改原始对象.为了防止这种情况,您需要实际构造一个新的对象实例.