Есть ли способ использовать необязательные аргументы (параметры по умолчанию) с лямбда-выражения в С#? Я прочитал документацию, но не могу найти ничего, чтобы сказать так или иначе.
Чтобы проиллюстрировать, я могу определить простой метод, который использует необязательный аргумент для предоставления значения по умолчанию следующим образом:
void MyMethod(string arg = "default-value")
{
Console.WriteLine(arg);
}
Я хочу знать, если я могу сделать то же самое, используя выражение лямбда.
// gives a syntax error
Action<string> MyMethod = (arg = "default") => Console.WriteLine(arg);
Я могу работать в необязательном параметре со значением по умолчанию, используя делегат, но это кажется немного неуклюжим.
delegate void MyDelegate(string arg = "default");
MyDelegate MyMethod = arg => Console.WriteLine(arg);
В качестве альтернативы я мог бы проверить параметр в лямбда-теле, что-то вроде...
Action<string> MyMethod = (arg) => Console.WriteLine(string.IsNullOrEmpty(arg) ?
"default" :
arg);
Но снова это кажется немного неуклюжим.
Можно ли использовать необязательные параметры для установки значения по умолчанию в выражении лямбда в С#?