我对C#中的Lambda表达式非常陌生,我很难理解它们如何在集合中存储/检索。
我正在尝试编写一个程序来创建一个包含10个Funcs的列表,例如x => x + 1, x => x + 2等,作为测试。 我的期望输出是0,1,2,3,4,5,6,7,8,9 以下是我的代码:
当我用一个Func数组替换List[Func]时,得到了相同的结果。我错过了什么?
我正在尝试编写一个程序来创建一个包含10个Funcs的列表,例如x => x + 1, x => x + 2等,作为测试。 我的期望输出是0,1,2,3,4,5,6,7,8,9 以下是我的代码:
var list = new List<Func<int, int>>();
for (int i = 0; i < 10; i++)
{
Func<int, int> func = x => x + i;
Console.WriteLine("a) " + func.Invoke(0)); //returns 0,1,2,3,4,5,6,7,8,9
list.Add(func);
Console.WriteLine("b) " + list[i].Invoke(0)); //returns 0,1,2,3,4,5,6,7,8,9
}
foreach (var func in list) //returns 10,10,10,10,10,10,10,10,10,10
Console.WriteLine("c) " + func.Invoke(0));
for(int i = 0; i < list.Count; i++) //returns 10,10,10,10,10,10,10,10,10,10
Console.WriteLine("d) " + list[i].Invoke(0));
当我用一个Func数组替换List[Func]时,得到了相同的结果。我错过了什么?