Вход на сайт
Где найти старый компилятор для C# 4.0
821 просмотров
Перейти к просмотру всей ветки
в ответ AlexNek 15.03.19 20:58, Последний раз изменено 15.03.19 21:54 (MrSanders)
Да, в ставке мелкомягких все малохольные.
var actions = new List<Action>(); int i = 1; actions.Add(() => Console.WriteLine(i)); i = 2; actions.Add(() => Console.WriteLine(i)); var actions2 = new List<Action>(); foreach(int j in Enumerable.Range(1,2)){ actions2.Add(() => Console.WriteLine(j)); } Console.WriteLine("1:"); foreach (var action in actions){ action();} Console.WriteLine("2:"); foreach (var action in actions2) { action();}
Радостно выдаёт (поправил, надо было копировать вывод а не перенабирать :), цикл выдаст "1 2", два вызова Add с изменением в промежутке i - "2 2")
1: 2 2 2: 1 2
От это я понимаю, исправили поведение foreach, теперь всё стало ясно и понятно. Уж лучше как в яве, запретить использовать переменные из scope, только константы (final).