Подтвердить что ты не робот

Что означает() в выражении лямбда при использовании Actions?

Я наклеил код с сайта Jon Skeet С# In Depth:

static void Main()
{
    // First build a list of actions
    List<Action> actions = new List<Action>();
    for (int counter = 0; counter < 10; counter++)
    {
        actions.Add(() => Console.WriteLine(counter));
    }

    // Then execute them
    foreach (Action action in actions)
    {
        action();
    }
} 

http://csharpindepth.com/Articles/Chapter5/Closures.aspx

Обратите внимание на строку:

actions.Add(()

Что означает() в квадратных скобках?

Я видел несколько примеров лямбда-выражений, делегатов, использование объекта Action и т.д., но я не видел объяснения этого синтаксиса. Что оно делает? Почему это необходимо?

4b9b3361

Ответ 1

Это сокращение для объявления лямбда-выражения, которое не принимает аргументов.

() => 42;  // Takes no arguments returns 42
x => 42;   // Takes 1 argument and returns 42
(x) => 42; // Identical to above

Ответ 2

Это выражение лямбда без параметров.

Ответ 3

Я думаю о lambas вот так:

(x) = > {return x * 2; }

Но это важно только:

(x) = > {return x * 2; }

Нам нужно = > знать, что это лямбда вместо кастинга, и таким образом мы получаем следующее:

x = > x * 2

(извините за не форматирование кода как кода, потому что вы не можете сделать вещи жирным в коде..)

Ответ 4

От MSDN. Выражение lambda принимает форму (входы) = > выражение. Таким образом, выражение lambda like() = > означает, что входных параметров нет. Какая подпись для Action не имеет параметров

Ответ 5

То, что делает эта строка, - это добавить анонимное действие в список с использованием лямбда-выражений, которое не принимает никакого параметра (причина в том, что существует()) и ничего не возвращает из-за того, что он печатает только фактическое значение счетчика.

Ответ 6

Обозначает анонимную функцию без параметра.