我使用Func<>添加整数范围(101,105) delegate。我想在执行以下操作时得到101,102,.. 105作为输出。但是我得到204,204,..... 出了什么问题?
class MainClass
{
static List<Func<int>> somevalues = new List<Func<int>>();
static void Main()
{
foreach (int r in Enumerable.Range(100, 105))
{
somevalues.Add(() => r);
}
ProcessList(somevalues);
Console.ReadKey(true);
}
static void ProcessList(List<Func<int>> someValues)
{
foreach (Func<int> function in someValues)
{
Console.WriteLine(function());
}
}
}
答案 0 :(得分:5)
答案 1 :(得分:3)
foreach (int r in Enumerable.Range(100, 105))
{
int s = r;
somevalues.Add(() => s);
}
我认为,您需要将外部变量捕获到临时值以实现输出。我不确定所谓的概念是什么(可能是捕获的变量)。
答案 2 :(得分:1)
范围方法签名如下:
Range(int start, int count);
你说的是“从100开始,给我下一个105号码。”
不是,“从100开始到105完成。”