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