Значение() => Оператор в С#, если он существует
Я прочитал эту интересную строку здесь, в ответе Джона Скита.
Интересной линией является то, где он выступал за использование делегата:
Log.Info("I did something: {0}", () => action.GenerateDescription());
Вопрос в том, что это за оператор() = > , интересно? Я попробовал Googling, но так как это сделало символы, на самом деле Google не мог помочь. Я что-то неловко пропустил здесь?
Ответы
Ответ 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();
});