Лямбда-выражения и локальные переменные - 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" явно не указан.

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

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


СОХРАНИТЬ ССЫЛКУ