русский
Germany.ruForen → Архив Досок→ Programmierung

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

15.03.19 19:04
Re: Где найти старый компилятор для C# 4.0
 
AlexNek патриот
AlexNek
in Antwort MrSanders 15.03.19 16:37

Вроде кажется дошло, поправьте если неправильно.

Для использования локальных переменных в лямбде/анонимной функции делается как бы снимок всех требуемых переменных в специальном closure class который решили назвать DisplayClass

https://stackoverflow.com/questions/16401860/what-does-dis...

Если внутрь цикла вставить ненужный оператор присваивания, то компилятор создает closure class каждый раз внутри цикла и делает снимок. Без этого оператора closure class создается вне цикла и также делается снимок внутри цикла. То бишь имеем в одном случае 1 экземпляр с 10 присваиваниями в цикле , а в другом случае 10 экземпляров с одним присваиванием. closure class создается в месте "минимальной видимости" переменных.

for (int i = 0; i < 10; i++)
{
     int tmp = i;
     Action action = delegate() { Console.WriteLine(tmp); };
     actions.Add(action);
}
 

Sprung zu