Значение оператора () => в C #, если он существует - PullRequest
38 голосов
/ 02 сентября 2010

Я прочитал эту интересную строку здесь в ответе Джона Скита.

Интересная строка заключается в том, что он выступает за использование делегата:

Log.Info("I did something: {0}", () => action.GenerateDescription());

Вопрос в том, что это за оператор () =>, интересно?Я попробовал Googling, но так как он сделан из символов, Google не мог помочь.Я смущенно что-то здесь упустил?

Ответы [ 5 ]

54 голосов
/ 02 сентября 2010

Это вводит лямбда-функцию (анонимный делегат) без параметров, она эквивалентна и в основном сокращена для:

delegate void () { return action.GenerateDescription(); }

Вы также можете добавить параметры, так:

(a, b) => a + b

Это примерно эквивалентно:

delegate int (int a, int b) { return a + b; }
8 голосов
/ 02 сентября 2010

=> это лямбда-оператор. Когда у нас нет входных параметров, мы просто используем круглые скобки () перед лямбда-оператором.

синтаксис: (input parameters) => expression

3 голосов
/ 02 сентября 2010

Это пример лямбда-выражения, которое вы можете узнать больше здесь .

2 голосов
/ 02 сентября 2010

Создание анонимного делегата для указанного метода.

Возможно, в вашем случае это будет Func<string>

1 голос
/ 02 сентября 2010

Это способ передать анонимный делегат без параметров в качестве лямбда-выражения.

Аналогично .NET 2.0

Log.Info("I did something: {0}", delegate()
            {
                return action.GenerateDescription();
            });
...