繁体   English   中英

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

[英]C# - A more efficient ternary operator

我在编写一个程序,其中要检查字符串是否等于"" ,以及是否不使用它,但是如果使用,请使用默认值。 我知道我可以做string != "" ? string : "default value" string != "" ? string : "default value" ,但是,由于我不断键入string ,因此我觉得这效率很低。 当然,写出一个string对我来说没有问题,但是,如果在另一个项目中,我必须引用一个带有长包名的字符串,那会有些烦人。

目前,没有操作员可以执行您想要的操作。

但实际上,这里有一个“默认或空的合并运算符”的建议:

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";

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

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

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

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

来源: String.Empty和“”(空字符串)有什么区别?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM