1. Главная
  2. Библиотека
  3. Программирование
  4. var functions = new List(); actions = new List(); (var...
Разбор задачи

var functions = new List(); actions = new List(); (var i = 0; i < 3; i++) { var j = i; functions.Add(() => { j *= i; return j; }); actions.Add(() => { j += 10; }); } (var action in actions) { action(); } .WriteLine(string.Join(" ", functions.Select(f =>

  • Предмет: Программирование
  • Автор: Кэмп
  • #Основы алгоритмизации и программирования
  • #Языки программирования (C++, Java, Python и др.)
var functions = new List(); actions = new List(); (var i = 0; i < 3; i++) { var j = i; functions.Add(() => { j *= i; return j; }); actions.Add(() => { j += 10; }); } (var action in actions) { action(); } .WriteLine(string.Join(" ", functions.Select(f =>

Условие:

var functions = new List<Func<int>>();\nvar actions = new List<Action>();
\nfor (var i = 0; i < 3; i++)
{
var j = i;

functions.Add(() =>
{
j *= i;
return j;
});

actions.Add(() =>
{
j += 10;
});
}
\nforeach (var action in actions)
{
action();
}
\nConsole.WriteLine(string.Join(" ", functions.Select(f => f())));

Решение:

Здравствуйте! Я рад помочь вам разобраться с этим кодом на C#. Это классический пример, связанный с захватом переменных в замыканиях (closures) в цикле for.

Давайте пошагово проанализируем, что происходит с переменными i и j и как это влияет на выполнение функций, добавленных в списки functions и actions.

1. Дано

У нас есть два списка:

  1. functions: Список делегатов типа Func<int>, которые не принимают аргументов и возвращают int.
  2. actions: Список делегатов типа Action, которые не принимают аргументов и ничего не возвращают.

В цикле for от i=0i=0 до i=2i=2 (включит...

Внутри — полный разбор, аргументация, алгоритм решения, частые ошибки и как отвечать на каверзные вопросы препода, если спросит

Попробуй решить по шагам

Попробуй один шаг и продолжи в режиме обучения или посмотри готовое решение

Какое ключевое отличие в захвате переменных `i` и `j` в замыканиях демонстрирует данный код?

Что нужно знать по теме:

Что нужно знать по теме

Алгоритм решения

Топ 3 ошибок

Что спросит препод

Выбери предмет