Назад к вопросам
Middle+
6
Когда происходит замыкание (closure)?
Компании, где спрашивали
Gravilink
Ответ от нейросети
sobes.tech AI
В C# замыкание (closure) происходит, когда лямбда-выражение или анонимный метод захватывает переменные из внешнего контекста, и эти переменные сохраняются и доступны даже после выхода из области видимости, где они были объявлены.
Например:
Func<int> CreateCounter()
{
int count = 0;
return () => ++count;
}
var counter = CreateCounter();
Console.WriteLine(counter()); // 1
Console.WriteLine(counter()); // 2
Здесь лямбда захватывает переменную count, и она сохраняет своё состояние между вызовами. Замыкание происходит в момент создания лямбды, когда она «захватывает» внешние переменные.