Работа с делегатом 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() { ... }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д