C#にPHPのようなオプションパラメータがありますか?
-
19-08-2019 - |
質問
PHPのオプションパラメータを使用すると、パラメータを送信しない場合、デフォルト値に割り当てられます:
public function getCustomer(id, optionalMessage = "(no message)") {
...
}
C#では、通常、 C#メソッドのオーバーロードでこれを解決します。例:
public void GetCustomer(int id)
{
...
}
public void GetCustomer(int id, string optionalMessage)
{
...
}
しかし、実用的なPHPのバリアントが恋しいです。 C#には、PHPの例のように、オプションのパラメーターを実行するための甘い構文もありますか?
解決
C#3.0ではありません。この機能はC#4.0のシートにあります-こちら。
今のところ、異なるオーバーロードを使用する必要があります:
public void Foo(int a) {Foo(a, "");}
public void Foo(int a, string b) {...}
提案されている構文は次のとおりです。
public void Foo(int a, string b = "") {...}
次のいずれかで呼び出されます:
Foo(123); // use default b
Foo(123, "abc"); // optional by position
Foo(123, b: "abc"); // optional by name
他のヒント
いいえ。ただし、特にオプションのパラメーターが同じタイプである場合(またはキャストを行うことを気にしない場合)、ある程度シミュレートできます。
paramsフラグを使用できます。
void paramsExample(object arg1, object arg2, params object[] argsRest)
ただし、これは型の安全性を失い、パラメーターまたは順序の型の強制はありません。
所属していません StackOverflow