Работа с делегатом Action - C#
Формулировка задачи:
Добрый вечер. Подскажите пожалуйста разницу работы приведенных ниже примеров:
Почему при использовании в цикле переменной, считывающей значение переменной-счетчика элементам массива делегата Action присваиваются значения равные переменной-счетчику, но если в цикле не использовать лишних переменных и в лямбда-выражении передавать переменную-счетчик, то значения элементов равны последнему значению переменной-счетчика?
using System;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
Action[] actions = new Action[3];
for (int i = 0; i < 3; i++)
{
int loopScopedi = i;
actions[i] = () => Console.Write(loopScopedi);
}
foreach (Action a in actions) a();
Console.ReadLine();
}
}
}using System;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
Action[] actions = new Action[3];
for (int i = 0; i < 3; i++)
{
actions[i] = () => Console.Write(i);
}
foreach (Action a in actions) a();
Console.ReadLine();
}
}
}Решение задачи: «Работа с делегатом Action»
textual
Листинг программы
public void SomeMethodName123() { ... }