C# 在循环中使用委托传递引用问题
下面的代码创建并返回一个C# 在循环中使用委托传递引用问题,c#,delegates,pass-by-reference,C#,Delegates,Pass By Reference,下面的代码创建并返回一个字典 然后,代码的目的是将一些基本值存储在列表中,然后根据传递到方法中的entityType,向这些基本值添加一些附加值。然后循环一定数量的行以创建字典,其中int是行号 我遇到的问题是,baseValues在for循环的每次迭代中都会被更新。使用var rowValue=baseValues时,我没有想到会出现这种情况 这是集合中最后一项的调试屏幕截图 我希望字典中的每个列表包含8个项目,但它会随着每次迭代而增加 为什么会发生这种情况?我该如何纠正它?看起来您已经找到
字典
然后,代码的目的是将一些基本值存储在列表中,然后根据传递到方法中的entityType
,向这些基本值添加一些附加值。然后循环一定数量的行以创建字典
,其中int
是行号
我遇到的问题是,baseValues
在for循环的每次迭代中都会被更新。使用var rowValue=baseValues时,我没有想到会出现这种情况代码>
这是集合中最后一项的调试屏幕截图
我希望字典中的每个列表
包含8个项目,但它会随着每次迭代而增加
为什么会发生这种情况?我该如何纠正它?看起来您已经找到了解决问题的方法,但这里有一个解决方法
你在哪里写作
var rowValue = baseValues;
您实际上只是将“rowValue”作为指向“baseValues”的指针。要制作副本,您可以执行以下操作:
var rowValue = baseValues.ToList();
看起来你已经走上了解决问题的轨道,但这里有一个解决方法
你在哪里写作
var rowValue = baseValues;
您实际上只是将“rowValue”作为指向“baseValues”的指针。要制作副本,您可以执行以下操作:
var rowValue = baseValues.ToList();
与重复使用相同的baseValue
不同,每次迭代都会在那里添加更多的项目,您可以执行类似于employer.InsertRange(0,baseValue)的操作;值。添加(行,雇主)
而不是重复使用相同的baseValue
每次迭代都在那里添加更多项目-您可以执行类似于employer.InsertRange(0,baseValue)的操作;值。添加(行,雇主)代码>