我的代码如下:
var feeCTC = new FeeGroup(); feeCTC = feeGroup;
var feeWYS = new FeeGroup(); feeWYS = feeGroup;
feeCTC.FeeValue = 231;
firstList.Add(feeCTC);
feeWYS.FeeValue = 1269;
secondList.Add(feeWYS);
我遇到的问题是,一旦我进入设置feeWYS.FeeValue
的第二次计算,feeCTC.FeeValue
也会更新为相同的数字(firstList
的值也会更新为{{ 1}}),这使我相信它们是对同一地址的引用。如何克隆feeGroup
以便我可以操纵其值(并且不使用ICloneable接口)?
答案 0 :(得分:1)
feeCTC = feeGroup;
不会克隆feeGroup
。它将引用复制到feeCTC
。因此,feeCTC
和feeWYS
都引用了同一个对象。这就是为什么你所做的任何改变都会反映在另一个参考文献中。
如何克隆feeGroup以便我可以操纵其值(而不使用ICloneable接口)?
一些选项:
Object.MemberwiseClone
制作浅色副本(再次确保关闭引用类型属性。请注意,IClonable
非常无用,因为它定义的只是一个Clone
方法,但没有提供实现或上下文来指示close是浅层还是深层克隆。