Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Где найти старый компилятор для C# 4.0

15.03.19 21:35
Re: Где найти старый компилятор для C# 4.0
 
MrSanders старожил
в ответ 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).

 

Перейти на