C# - 更高效的三元运算符

C# - A more efficient ternary operator

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

根据 DavidG 的选择和帮助 link,您可以使用此扩展功能。

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

(这将 return 备用字符串,即使 'str' 为空)

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

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

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

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

但实际上有一个 "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";