Завершим тему замыкания полностью примерами. 1. Лямбда использует только свои параметры и локальные переменные внутри себя Func<int, int> inc = x => x + 1; Console.WriteLine(inc(10)); // 11 Console.WriteLine(inc.Target); // null (обычно), т.к. нечего захватывать Почему нет замыкания: нет ссылок на переменные “снаружи”; всё, что нужно, приходит через параметр x. 2. Лямбда обращается только к static членам Func<int, int> f = x => Math.Abs(x); Console.WriteLine(f(-5)); // 5 Console.WriteLine(f.Target); // null (обычно) Почему нет замыкания: Math.Abs — статический метод, ему не нужен объект/окружение. 3. Используется const (константа), а не переменная const int k = 10; Func<int, int> add = x => x + k; Console.WriteLine(add(5)); // 15 Console.WriteLine(add.Target); // null (обычно) Почему нет замыкания: const — не “переменная”, это значение, которое компилятор подставляет напрямую. Захватывать нечего. 4. Method group на статический метод static int Square(in