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

Значение() => Оператор в С#, если он существует

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

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

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

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

4b9b3361

Ответ 1

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

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

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

(a, b) => a + b

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

delegate int (int a, int b) { return a + b; }

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

Аналогично этому из .NET 2.0

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