Лямбда-выражения и локальные переменные - C#

Узнай цену своей работы

Формулировка задачи:

static void Add(ref int a, int b)
{
    a += b;
}
 
static void Main(string[] args)
        {
            AsmMath f = new AsmMath(Add);
            int a = 10;
            f(ref a, 5);
 
            Console.WriteLine(Action(Add, 10, 20));
            Console.WriteLine(Action((ref int a, int b) => a -= b, 40, 15));
            Console.ReadLine();
        }
error CS0136: Невозможно объявить локальную переменную с именем "a" в этой области действия, так как она придаст другое значение "a"
Каким образом локальные переменные влияют на лямбда-выражения? Пытаюсь провести аналогию с с++, там такой код скомпилировался бы без проблем, потому что захват "a" явно не указан.

Решение задачи: «Лямбда-выражения и локальные переменные»

textual
Листинг программы
            int a = 5;
 
            AsmMath add = (ref int x, int y) => x += y;
            AsmMath sub = (ref int x, int y) => x -= y;

Оцени полезность:

8   голосов , оценка 3.875 из 5
Похожие ответы