C# - 如何使用空List <string>作为可选参数</string>

时间:2011-08-04 19:30:48

标签: c# c#-4.0

有人能提供一个例子吗?

我已经尝试了nullstring.Empty和对象初始化但它们不起作用,因为默认值必须在编译时保持不变

6 个答案:

答案 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>()吗?