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

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

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

 

Перейти на