//method with an optional parameter
public void DoSomething(int a, int b = 42);
//caller
DoSomething(a, b: default);
これはC#で行うことができますか?デフォルトのパラメータ値を渡す(何でも)
「パラメータを設定したくない場合は、パラメータを設定せずにメソッドを呼び出す」と言うこともできます。しかし、私は私のコードでは、このような醜いのIFを得る:
//kinda ugly :(
if(parameterIsSet)
DoSomething(a, myValue);
else
DoSomething(a);
私の代わりにこれを行うことができた場合:
DoSomething(a, b: parameterIsSet ? myValue : 42);
しかしI:
DoSomething(a, b: parameterIsSet ? myValue : default);
私はもちろん、これを行うことができます2つの場所で "42"をハードコードしたくない
あなたはDoSomethingの定義にアクセスしており、それを変更する権利がありますか? – CodeNotFound
あなたのロジックは 'parameterIsSet'と' myValue'をリンクしているようです。 DoSomethingの内部でこのロジックを扱うのはなぜですか? 'myValue'が' null 'であっても 'DoSomething(a、myValue)'を返します。 – rbm
@rbm多分彼はDoSomethingコードにアクセスできません。 – CodeNotFound