有人能提供一个例子吗?
我已经尝试了null
,string.Empty
和对象初始化但它们不起作用,因为默认值必须在编译时保持不变
答案 0 :(得分:91)
只需使用null coalescing运算符和空List
的实例public void Process(string param1, List<string> param2 = null) {
param2 = param2 ?? new List<String>();
}
这样做的问题是,如果“param2”为null并且您分配了一个新引用,那么它将无法在调用上下文中访问。
答案 1 :(得分:12)
您也可以使用default
执行以下操作,null
是编译时常量(List<T>
的情况下为void DoSomething(List<string> lst = default(List<string>))
{
if (lst == default(List<string>)) lst = new List<string>();
}
):
constructor
答案 2 :(得分:4)
这是不可能的。你应该使用方法重载。
public static void MyMethod(int x, List<string> y) { }
public static void MyMethod(int x)
{
MyMethod(x, Enumerable<string>.Empty());
}
答案 3 :(得分:2)
private void test(List<string> optional = null)
{
}
抱歉字符串而不是列表。 Null在4.0上工作正常,我正在使用visual studio 2010
答案 4 :(得分:0)
私有无效测试(params object [] params) {
}
答案 5 :(得分:-8)
您使用过new List<string>()
吗?