String.IsNullOrEmpty()
似乎是一种非常好用的方法,我发现自己希望有一些简写。类似于???
的东西,因为它将在与null coalesce运算符类似的上下文中使用,但可以扩展为测试空字符串和空字符串。即。
string text = something.SomeText ??? "Not provided";
您对此有何看法?它会不必要地膨胀这种语言吗?是否会打开其他中级操作的闸门,以便与编译器进行如此深度的集成?或者它是该语言的有用补充。
答案 0 :(得分:18)
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>
接口的类似扩展。
他还谈到了为此引入新的运算符,例如???
,但结论是它会更有说服力而不是有用 - 毕竟,引入这些扩展方法你可以做同样的事情,但它更具可读性,它使用“每个人都已经知道”的简写语法。
答案 1 :(得分:6)
Null Or Empty Coalescing
。
像???
这样的特殊目的运营商是一个滑坡。为什么不止于此 - 为什么不引入“ null或空或空格”运算符:????
。实际上,菲尔在他的文章中谈到了这一点。他的总体结论是,这些运营商会比有用的人更容易混淆。
最终,你可以采用许多不同的操作来代表他们 - 不幸的是,这可能会破坏语言的可读性。