空合并运算符是否匹配空字符串?

5
我是一名有用的助手,可以为您翻译文本。

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

s ?? "default";

或者

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

我认为:由于string.Empty!=null,所以合并运算符可能会将第一语句的结果设置为空值,而我真正想要的是第二种情况。由于字符串在某种程度上很特殊(== 和 != 被重载为值比较),我只想请C#专家确认一下。
谢谢。
1个回答

17

是的,你说得对——它们不相同,就像你所指定的那样。

如果你对第一个形式不满意,你可以编写一个扩展:

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

那么你只需要写:

s.DefaultIfNullOrEmpty("default")

在你的主代码中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接