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