Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在循环中使用委托传递引用问题_C#_Delegates_Pass By Reference - Fatal编程技术网

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)的操作;值。添加(行,雇主)