Sobes.tech
Назад к вопросам
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, и она сохраняет своё состояние между вызовами. Замыкание происходит в момент создания лямбды, когда она «захватывает» внешние переменные.