null-coalescing运算符是否匹配空字符串?

时间:2011-02-02 01:47:29

标签: c# null-coalescing-operator

我有一个非常简单的C#问题:处理空字符串时,以下语句是否相等?

s ?? "default";

(!string.IsNullOrEmpty(s)) ? s : "default";

我认为:从string.Empty!=null开始,当我真正想要的是第二个时,合并运算符可以将第一个语句的结果设置为空值。因为字符串是特殊的(==和!=重载到值比较)我只是想请C#专家确认。

谢谢。

1 个答案:

答案 0 :(得分:15)

是的,你是对的 - 它们与你指定的方式不一样。

如果您对第一张表格不满意,可以写下以下内容的扩展名:

public static string DefaultIfNullOrEmpty(this string x, string defaultValue)
{
    return string.IsNullOrEmpty(x) ? defaultValue : x;
}

然后你可以写:

s.DefaultIfNullOrEmpty("default")

在您的主要代码中。