方法参数数组默认值

时间:2012-09-26 17:25:28

标签: c# arrays parameters default-value optional-parameters

在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);
    }
}

但这不起作用。
是否有正确的方法可以做到这一点,如果有可能的话呢?

2 个答案:

答案 0 :(得分:15)

  

是否有正确的方法可以做到这一点,如果有可能的话呢?

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

  • 一个恒定的表达;
  • 新形式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);
    }
}

答案 1 :(得分:11)

试试这个:

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