Назад к вопросам
JuniorТеорияЧасто
Что выведет программа (строки через пробел)?
int bonus = 10;
Func<int, int> add = x => x + bonus;
Console.WriteLine(add(1));
bonus = 20;
Console.WriteLine(add(1));11 21
- Ждать
11 11: лямбда не копируетbonusпри создании, а держит саму переменную и при каждом вызове читает её текущее значение. - Считать, что замыкание видит только последнее значение переменной: каждый вызов читает то значение, что лежит в ней в момент вызова.
- Что изменится в выводе, если лямбда сама выполнит
bonus++перед тем, как вернуть результат? - Почему лямбды, созданные в цикле
forи захватившиеi, возвращают одно и то же число?