【问题标题】: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")
    

    在您的主代码中。

    【讨论】:

      猜你喜欢
      • 2011-02-20
      • 2012-09-19
      • 2013-06-16
      • 2015-04-04
      • 2010-10-03
      • 2015-11-18
      • 2016-09-05
      • 1970-01-01
      • 2011-01-26
      相关资源
      最近更新 更多