方法参数数组默认值

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

但这不起作用。
有没有正确的方法来做到这一点,如果这甚至可能的话?

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

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

  • 不断表达;
  • 表达式为新的ValType(),其中ValType是值类型,例如枚举或结构;
  • forms为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); } } 

试试这个:

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