質問

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) 

ただし、これは型の安全性を失い、パラメーターまたは順序の型の強制はありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top