C#でラムダ式でオプションの引数(デフォルトパラメータ)を使用する方法はありますか? 私はドキュメントを読みましたが、どちらかと言えば何も言えません。
たとえば、オプションの引数を使用してデフォルト値を指定する単純なメソッドを次のように定義できます。
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);
しかし、これもまた少し不器用に思えます。
オプションのパラメータを使用して、C#のラムダ式でデフォルト値を設定することは可能ですか?