我有一个使用linq ForEach
更新时获得的对象列表。问题是数据是用引用类型更新的。我想用值类型
我尝试克隆但是它没有工作(不确定我是否遵循了正确的程序)。
答案 0 :(得分:1)
您的列表newSetRatio
在if
条件中清空。如果该条件返回false
,则它将包含上一次迭代的值。由于它在每次迭代中填充,在条件之外,每当条件返回false
时,将添加assetSharingRatios
中的所有项目,而不会先清除列表。因此,如果assetSharingRatios
未更改且您的代码返回false
,则newSetRatio
将包含所有重复项。如果条件保持导致false
,则newSetRatio
中的项目将会增加三倍,依此类推。
另一点是你的最后一行代码contributePartnersData.assetSharingRatio = newSetRatio;
如果您修复了newSetRatio
行为,则只要contributingPartnersData
条件为assetSharingRatio
,添加到if
的最后一项就会获得新的false
值。不确定这是否有意,看起来有点奇怪。这就是为什么最后三行代码超出'if`的原因?