Я не могу понять, как пройтись по списку Action. Когда я пытаюсь это сделать, я получаю такие же значения, как и в предыдущей итерации.
Вот код (упрощенный пример):
string[] strings = { "abc", "def", "ghi" };
var actions = new List<Action>();
foreach (string str in strings)
actions.Add(new Action(() => { Trace.WriteLine(str); }));
foreach (var action in actions)
action();
Вывод:
ghi
ghi
ghi
Почему он всегда выбирает последний элемент в strings, когда выполняет действие?
И как я могу добиться желаемого результата, который будет выглядеть следующим образом:
abc
def
ghi