【问题标题】:Does null-coalescence operator match empty string?空合并运算符是否匹配空字符串?
【发布时间】:2011-06-19 16:38:40
【问题描述】:
我有一个非常简单的 C# 问题:以下语句在处理空字符串时不相等吗?
s ?? "default";
或
(!string.IsNullOrEmpty(s)) ? s : "default";
我认为:由于string.Empty!=null,当我真正想要的是第二个时,合并运算符可能会将第一个语句的结果设置为空值。由于字符串有些特殊(== 和 != 被重载以进行值比较),我只是想请 C# 专家确认。
谢谢。
【问题讨论】:
标签:
c#
null-coalescing-operator
【解决方案1】:
是的,你是对的 - 它们不一样,而且按照你指定的方式。
如果你对第一种形式不满意,你可以写一个扩展:
public static string DefaultIfNullOrEmpty(this string x, string defaultValue)
{
return string.IsNullOrEmpty(x) ? defaultValue : x;
}
那么你可以写:
s.DefaultIfNullOrEmpty("default")
在您的主代码中。