代码之家  ›  专栏  ›  技术社区  ›  JeremyWeir

如何编写nullOrEmpty合并运算符

c#
  •  3
  • JeremyWeir  · 技术社区  · 16 年前

    是否可以在字符串类中添加一个类似于

    string val = anotherVal ??? "Default Val";
    

    工作得像

    string val = !String.IsNullOrEmpty(anotherVal) ? anotherVal : "Default Val";
    
    1 回复  |  直到 16 年前
        1
  •  8
  •   Jon Skeet    16 年前

    不能为String类定义自己的运算符,也不能从C中使用它们。(f允许您为任意类创建运算符,有点像扩展方法,但对于其他成员类型也是如此。)

    你什么 可以 do是写一个扩展方法:

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

    并用以下方式称呼它:

    string val = anotherValue.DefaultIfEmpty("Default Val");
    

    如果不想计算“默认”字符串(除非需要),可以让一个重载接受一个函数:

    public static string DefaultIfEmpty(this string original,
                                        Func<string> defaultValueProvider)
    {
        return string.IsNullOrEmpty(original) ? defaultValueProvider() : original;
    }
    

    并用以下方式称呼它:

    string val = anotherValue.DefaultIfEmpty(() => "Default Val");