C#中的可选数组参数
本文关键字:数组 参数 | 更新日期: 2023-09-27 18:15:23
可能重复:
传递一个空数组作为c#中可选参数的默认值
我有一个方法,如下所示。当前,参数tags
不是可选
void MyMethod(string[] tags=null)
{
tags= tags ?? new string[0];
/*More codes*/
}
我想让参数tags
可选,就像c#
一样,要让参数可选,你可以在方法签名中设置默认值。我尝试了以下技巧,但都没用。
不起作用的代码-1
void MyMethod(string[] tags=new string[0]){}
不起作用的代码-2
void MyMethod(string[] tags={}){}
请告诉我缺少什么。
我已经看到了这个问题:
传递一个空数组作为可选参数的默认值
可选参数的文档显示:
默认值必须是以下类型的表达式之一:
常量表达式;
形式为
new ValType()
的表达式,其中ValType
是值类型,例如enum
或struct
;形式为
default(ValType)
的表达式,其中ValType
是值类型。
由于new string[0]
既不是常量表达式,也不是后面跟着值类型的new
语句,因此它不能用作默认参数值。
问题中的第一段代码摘录确实是一个很好的解决方法:
void MyMethod(string[] tags = null)
{
tags = tags ?? new string[0];
// Now do something with 'tags'...
}
不确定我是否做对了这件事。
static void Main(string[] args)
{
TestMe();
}
private static void TestMe(string[] param = null)
{
if (param == null)
{
Console.WriteLine("its empty");
}
}
此外,param的值必须是编译时间常数