【发布时间】:2011-08-04 19:30:48
【问题描述】:
有人可以举个例子吗?
我尝试过null,string.Empty 和对象初始化,但它们不起作用,因为默认值必须在编译时保持不变
【问题讨论】:
有人可以举个例子吗?
我尝试过null,string.Empty 和对象初始化,但它们不起作用,因为默认值必须在编译时保持不变
【问题讨论】:
只需使用 null 合并运算符和空 List<string> 的实例
public void Process(string param1, List<string> param2 = null)
{
param2 = param2 ?? new List<string>();
// or starting with C# 8
param2 ??= new List<string>();
}
这样做的问题是,如果“param2”为空并且您分配了一个新引用,那么它将无法在调用上下文中访问。
【讨论】:
您还可以使用default 执行以下操作,这是一个编译时间常数(null 在List<T> 的情况下):
void DoSomething(List<string> lst = default(List<string>))
{
if (lst == default(List<string>)) lst = new List<string>();
}
【讨论】:
这是不可能的。您应该改用方法重载。
public static void MyMethod(int x, List<string> y) { }
public static void MyMethod(int x)
{
MyMethod(x, Enumerable<string>.Empty());
}
【讨论】:
private void test(List<string> optional = null)
{
}
对不起字符串而不是列表。 Null 在 4.0 上对我来说很好用,我正在使用 Visual Studio 2010
【讨论】:
string,不是List<string>
我喜欢这种方式,比??=更具可读性
if (param == null) param = new();
【讨论】:
private void test(params object[] params)
{
}
【讨论】: