Вход на сайт
Где найти старый компилятор для C# 4.0
821 просмотров
Перейти к просмотру всей ветки
в ответ AlexNek 16.03.19 17:58
Вот
var closure = new Closure();
тут вы просто создаёте объект вашего класса Closure. К замыканиям отношения не имеющим. Замыкание создаётся компилятором когда вы, например, определяете лямбду () => expression.
ведь компайлер "разворачивает" лямбду в подобный код.
Кто сказал? Автор статьи на хабре? Он не прав. Проверка:
int i = 5; actions.Add(() => Console.WriteLine(i)); // вот тут возникнет closure содержащее эту лямбду и ссылку на i i = 50; actions[0]();
Как по-вашему, что выдаст?
Вот если тут коммент убрать так даже компилится не будет
https://paiza.io/projects/tEMtl6riuHO1bb1LK97ejQ?language=...
Вот это мне и интересно, это так с самого начала было или с 5-й версии, а до нее не было "read-only local variable"? Просто интересно было как именно они поведение foreach поменяли.е