17

C#では、メソッドでデフォルトのパラメーター値を使用できます。次に例を示します。

public void SomeMethod(String someString = "string value")
{
    Debug.WriteLine(someString);
}

しかし、ここで、メソッドのパラメーターとして配列を使用し、そのデフォルト値を設定したいと思います。
私はそれがこのように見えるべきだと思っていました:

public void SomeMethod(String[] arrayString = {"value 1", "value 2", "value 3"})
{
    foreach(someString in arrayString)
    {
        Debug.WriteLine(someString);
    }
}

しかし、これは機能しません。
これが可能であるとしても、これを行う正しい方法はありますか?

4

2 に答える 2

24

これが可能であるとしても、これを行う正しい方法はありますか?

デフォルト値は(オプションの引数から)次のいずれかである必要があるため、これは(直接)不可能です。

  • 定数式;
  • new ValType()形式の式。ここで、ValTypeは、列挙型や構造体などの値型です。
  • default(ValType)形式の式。ここで、ValTypeは値型です。

配列の作成は、オプションの引数の可能なデフォルト値のいずれにも適合しません。

ここでの最良のオプションは、オーバーロードを作成することです。

public void SomeMethod()
{
    SomeMethod(new[] {"value 1", "value 2", "value 3"});
}


public void SomeMethod(String[] arrayString)
{
    foreach(someString in arrayString)
    {
        Debug.WriteLine(someString);
    }
}
于 2012-09-26T17:27:41.110 に答える
14

これを試して:

public void SomeMethod(String[] arrayString = null)
{
    arrayString = arrayString ?? {"value 1", "value 2", "value 3"};
    foreach(someString in arrayString)
    {
        Debug.WriteLine(someString);
    }
}
someMethod();
于 2012-09-26T17:38:06.103 に答える