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

Dav*_*ale 8 c#

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

 string text = something.SomeText ??? "Not provided";
Run Code Online (Sandbox Code Playgroud)

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

Tom*_*han 18

Phil Haack 不久前在博客上发表了这篇文章.基本上,他建议使用一种扩展方法string来实现

var text = someString.AsNullIfEmpty() ?? "Not provided.";
Run Code Online (Sandbox Code Playgroud)

扩展方法非常简单:

public static string AsNullIfEmpty(this string str)
{
    return !string.IsNullOrEmpty(str) ? str : null;
}
Run Code Online (Sandbox Code Playgroud)

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

他还谈到???了为此引入新的运算符,但得出的结论是它会更加混乱而不是有用 - 毕竟,引入这些扩展方法你可以做同样的事情,但它更具可读性,并且它使用简写语法"每个人已经知道".


LBu*_*kin 6

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

???滑坡这样的特殊目的操作员.为什么不止于此 - 为什么不引入" null或空或空白 "运算符:????.实际上,菲尔在他的文章中谈到了这一点.他的总体结论是,这样的运营商会比帮助更困惑.

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