for循环忽略C#

时间:2016-03-09 21:58:41

标签: c# .net for-loop

尝试运行以下代码时:

        Task[] threads = new Task[5];
        int[] nums = new int[5];
        for (int i = 0; i < 5; i++)
        {
            threads[i] = new Task(() => { nums[i] = i; });
            threads[i].Start();
        }
        Task.WaitAll(threads);
        Console.WriteLine(nums);
        Console.ReadLine();

我收到'IndexOutOfRangeException',因为FOR循环在达到4时没有停止,并且再进行一次迭代。它只有在我添加新变量c时才能正常工作,将i的值赋给c,并使用c作为索引。为什么会这样?有没有已知的解决方案?

提前多多感谢。

0 个答案:

没有答案