Sobes.tech
Back to questions
Junior — Middle
66

Объясните концепцию замыкания в программировании и как оно используется

Companies where asked
СБЕР ТехСБЕР Тех

Answer from AI

sobes.tech AI

Замыкание — это функция, которая захватывает и запоминает переменные из окружающего контекста, даже после того, как этот контекст перестал существовать. В C# замыкания часто возникают при использовании лямбда-выражений или анонимных методов, которые обращаются к переменным из внешнего метода.

Пример:

Func<int> CreateCounter()
{
    int count = 0;
    return () => ++count; // лямбда захватывает переменную count
}

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

Здесь лямбда-функция сохраняет доступ к переменной count, даже после завершения метода CreateCounter. Это позволяет сохранять состояние между вызовами.

Использование замыканий полезно для создания функций с внутренним состоянием, обработки событий, отложенного выполнения и других сценариев, где нужно сохранить контекст.