lambda expressionsでoptional arguments(デフォルトパラメータ)を使用する方法はありますか?私はドキュメンテーションを読んだことがありますが、どちらか一方の言い方をすることはできません。 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#でラムダ式のデフォルト値を設定することはできますか?
[オプションのパラメータを引数としてメソッドを渡す方法は?](http://stackoverflow.com/questions/12728844/how-to-pass-a-method-with-optional-parameters-as) -an-argument) – horgh
それは意味をなさない。とにかく引数なしで 'Action'を呼び出すことはできません。 –
SLaks
@ ConstantinVasilcov - それはまったく重複していません - 私はラムダ式について簡単に質問しています - 単純な方法ではありません。私はそれを明確にしたと思った、申し訳ありません。 – Fraser