Почему я не вижу здесь поведение перехваченной переменной?

Я столкнулся с этим странным поведением с захваченными переменными. Ниже две петли. Я ожидаю, что оба будут вести себя одинаково. Почему это ведет себя по-другому?

        private static void Loop1()
    {
        var actions = new List<Action>();
        foreach (var number in Enumerable.Range(1, 5))
        {
            actions.Add(()=>Console.WriteLine(number));
        }
        foreach (var currentAction in actions)
        {
            currentAction();
        }
    }

    private static void Loop2()
    {
        var actions = new List<Action>();
        for (int number = 0; number <= 4; number++)
        {
            actions.Add(() => Console.WriteLine(number));
        }
        foreach (var currentAction in actions)
        {
            currentAction();
        }
    }

Первый цикл печатает 1,2,3,4,5 Второй цикл печатает 5,5,5,5,5

0 ответов

Другие вопросы по тегам