繁体   English   中英

是否存在String.IsNullOrEmpty运算符的情况?

[英]Is there a case for a String.IsNullOrEmpty operator?

String.IsNullOrEmpty()似乎是一个非常好用的方法,我发现自己希望有一些简写。 有点像??? 因为它将在null coalesce运算符的类似上下文中使用,但可以扩展为测试空字符串和空字符串。

 string text = something.SomeText ??? "Not provided";

你对此有何看法? 它会不必要地膨胀这种语言吗? 是否会打开其他中级操作的闸门,以便与编译器进行如此深度的集成? 或者它是该语言的有用补充。

Phil Haack不久前在博客上发表了这篇文章 基本上,他建议一个string的扩展方法,让你做

var text = someString.AsNullIfEmpty() ?? "Not provided.";

扩展方法非常简单:

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

他还建议使用.NET 4中的string.IsNullOrWhitespace()方法检查空格而不是空白,以及IEnumerable<T>接口的类似扩展。

他还谈到引入新的运营商,如??? 为此,但得出的结论是,它会让人感到困惑而不是有用 - 毕竟,引入这些扩展方法你可以做同样的事情,但它更具可读性,并且它使用“每个人都已经知道”的简写语法。

Phil Haack在他的博客上谈到了这个确切的操作。 你应该查看他的文章Null Or Empty Coalescing

特殊用途的运营商如??? 是一个滑坡。 为什么不止于此 - 为什么不引入“ null或空或空格 ”运算符: ???? 实际上,菲尔在他的文章中谈到了这一点。 他的总体结论是,这样的运营商会比帮助更困惑。

最终,你可以采用许多不同的操作来代表他们 - 不幸的是,这可能会破坏语言的可读性。

暂无
暂无

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

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