Вход на сайт
Где найти старый компилятор для C# 4.0
821 просмотров
Перейти к просмотру всей ветки
MrSanders старожил
в ответ AlexNek 15.03.19 19:04
Эт феерия какая-то. Т.е. они делали closure (замыкание) по значениям, не ссылкам, но "соптимизировали" его, типа а чо, не меняется же ничего, переменные всё те же, можно новый не создавать. Здорово, память сэкономили, но блин, ведь значения поменялись, а closure у них по значениям, а?
Я так понял что в 5-м микрософт поправил поведение в циклах. А что он сейчас скомпилирует если написать (без цикла)
int i = 1; actions.Add(() => Console.WriteLine(i)); i = 2; actions.Add(() => Console.WriteLine(i));
Опять один closure (по значениям!) в котором будет только последняя 2-ка висеть и при отработке Action-ов выдаст нам "2 2"?