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

Pav*_*thi 55 c# c#-4.0

有人可以举一个例子吗?

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

Vas*_*sea 104

只需使用null合并运算符和空List的实例

public void Process(string param1, List<string> param2 = null) {
    param2 = param2 ?? new List<String>();
}
Run Code Online (Sandbox Code Playgroud)

这样做的问题是,如果"param2"为null并且您分配了一个新引用,那么它将无法在调用上下文中访问.


Him*_*ere 17

您也可以使用default哪个IS编译时常量(null在a的情况下List<T>):

void DoSomething(List<string> lst = default(List<string>)) 
{
    if (lst == default(List<string>)) lst = new List<string>();
}
Run Code Online (Sandbox Code Playgroud)

  • IntelliSense 向我展示了只需使用“default”而不是“default(List&lt;string&gt;”) 即可进一步简化该语句。 (3认同)

Dom*_*nic 6

是不可能的。您应该改用方法重载。

public static void MyMethod(int x, List<string> y) { }
public static void MyMethod(int x)
{
    MyMethod(x, Enumerable<string>.Empty());
}
Run Code Online (Sandbox Code Playgroud)