C# - 一个更有效的三元运算符

时间:2017-11-13 00:49:56

标签: c# ternary

我正在创建一个程序,我想在其中检查字符串是否等于"",如果它不使用它,但如果是,则使用默认值。我知道我可以做string != "" ? string : "default value"但是,我觉得这样效率很低,因为我一直打字string。当然,写出string对我来说没问题,但是,如果在另一个项目中,我必须引用一个包长名称的字符串,这会更烦人。

2 个答案:

答案 0 :(得分:3)

目前没有任何操作员可以做你想做的事。

但实际上有一个“Default-or-Empty Coalesce operator”的提议,在这里:

https://github.com/dotnet/csharplang/issues/183

目前你能做的最好的事情是声明一个像这样的扩展方法:

    public static string NullIfEmpty(this string str)
    {
        return string.IsNullOrEmpty(str) ? null : str;
    }

并像这样使用它:

var foo = yourString.NullIfEmpty() ?? "default value";

答案 1 :(得分:1)

根据DavidG的选项和有用的链接,您可以使用此扩展功能。

public static string IfEmpty(this string str, string alternate)
{
    return str?.Length == 0 ? str : alternate;
}

(即使'str'为空,这也会返回备用字符串)

并用作mystring.IfEmpty("something else")

来源:What is the difference between String.Empty and "" (empty string)?

此外,您不需要引用非常长的字符串。