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

有没有正确的方法来做到这一点,如果这甚至可能吗?

这是不可能的(直接),因为默认值必须是以下之一(来自Optional Arguments):

  • 一个常量表达式;
  • 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 回答