C# · 12月 26, 2021

c# – 复制对象并使用重复,而不更改原始

假设我有一个对象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 };

当您处理引用类型(任何类)时,只需分配一个变量即可创建对原始对象的引用的副本.因此,在该对象内设置属性值也会更改原始对象.为了防止这种情况,您需要实际构造一个新的对象实例.