如何为方法中的string[]类型参数设置默认值?
问题解答
在C#中,数组无法作为编译时常量,所以你没法直接用空数组字面量作为可选参数的默认值。
你提到的default关键字在这里等价于null(引用类型的默认值都是null),如果想要明确实现“默认空数组”的效果,有两种常用写法:
- 用
null作为默认值,在方法内部兜底为空数组:
void Foo(string[] param = null) { param = param ?? Array.Empty<string>(); // 后续业务逻辑 }
这里Array.Empty<string>()是.NET提供的高效空数组实例,避免重复创建新的空数组对象。
- 通过方法重载实现默认空数组的调用体验:
void Foo() { Foo(Array.Empty<string>()); } void Foo(string[] param) { // 核心逻辑 }
调用时可以不带参数,内部自动传入空数组,绕开可选参数默认值必须是编译时常量的限制。
需要注意的是,new string[0]虽然能创建空数组,但它属于运行时创建的实例,并非编译时常量,所以不能直接作为可选参数的默认值,这也是你最初写法报错的原因。
内容的提问来源于stack exchange,提问作者Bart Friederichs
相关产品推荐
相关产品推荐

