我的问题是为什么在lambda表达式中使用迭代器变量时结果不正确。
我已经按照SWeko的答案在这里进行了操作,但对我没有起作用。 以下是我的伪代码:
我已经按照SWeko的答案在这里进行了操作,但对我没有起作用。 以下是我的伪代码:
List<string> list = new List<string>(3);
// where list.Count=3
for (int i=0;i<list.Count;i++){
int yy=i;
AFunctionWithLambda(() => Console.WriteLine (list[yy]));
}
但是控制台仅会输出信息
list[3]
三次,好像“yy”的唯一可能值是“i”的最后一个值。似乎起作用是因为在声明“yy”变量之前,控制台返回了“i = 1”,但实际上并不是这样的,我不知道我错过了什么。
提前感谢!
AFunctionWithLambda
是什么?请提供一个最小、完整和可验证的示例。 - Thomas Levesquei
/yy
的确切代码,并且我们需要知道 lambda 表达式是立即调用、作为委托保留并稍后执行还是异步执行。 - Marc Gravelllist.Count=3
,那么首先list[3]
就没有意义。 - Marc Gravell