方法参数数组默认值
在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();