Когда происходит замыкание (closure)?

Например:

Короткий ответ

Что ответить на собеседовании

В C# замыкание (closure) происходит, когда лямбда-выражение или анонимный метод захватывает переменные из внешнего контекста, и эти переменные сохраняются и доступны даже после выхода из области видимости, где они были объявлены.

Подробный разбор

Ответ с пояснениями

В C# замыкание (closure) происходит, когда лямбда-выражение или анонимный метод захватывает переменные из внешнего контекста, и эти переменные сохраняются и доступны даже после выхода из области видимости, где они были объявлены.

Например:

Func<int> CreateCounter()
{
    int count = 0;
    return () => ++count;
}

var counter = CreateCounter();
Console.WriteLine(counter()); // 1
Console.WriteLine(counter()); // 2

Здесь лямбда захватывает переменную count, и она сохраняет своё состояние между вызовами. Замыкание происходит в момент создания лямбды, когда она «захватывает» внешние переменные.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку