C'è un modo per utilizzare optional arguments (parametri predefiniti) con lambda expressions in C#? Ho letto la documentazione ma non riesco a trovare nulla da dire in un modo o nell'altro.È possibile utilizzare i parametri opzionali/predefiniti in un'espressione lambda in C#?
Per illustrare, posso definire semplice metodo che utilizza un argomento opzionale per fornire un valore di default in questo modo:
void MyMethod(string arg = "default-value")
{
Console.WriteLine(arg);
}
Quello che voglio sapere è se sono in grado di fare la stessa cosa con un lambda espressione.
// gives a syntax error
Action<string> MyMethod = (arg = "default") => Console.WriteLine(arg);
posso lavorare in un parametro facoltativo con un valore predefinito utilizzando un delegato, ma questo sembra un po 'goffo.
delegate void MyDelegate(string arg = "default");
MyDelegate MyMethod = arg => Console.WriteLine(arg);
In alternativa ho potuto verificare il parametro nel corpo lambda, qualcosa di simile ...
Action<string> MyMethod = (arg) => Console.WriteLine(string.IsNullOrEmpty(arg) ?
"default" :
arg);
Ma ancora una volta questo sembra un po 'goffo.
È possibile utilizzare i parametri facoltativi per impostare un valore predefinito in un'espressione lambda in C#?
possibile duplicato di [Come passare un metodo con parametri facoltativi come argomento?] (Http://stackoverflow.com/questions/12728844/how-to-pass-a-method-with-optional-parameters-as -an-argomento) – horgh
Questo non ha senso. Non si può chiamare comunque "Azione" senza argomento. –
SLaks
@KonstantinVasilcov - non è affatto un duplicato - sto specificatamente chiedendo espressioni lambda - non semplici metodi. Pensavo di averlo chiarito, scusa. – Fraser