哪种方式确实是检查空字符串的最快方法,并且有任何特定情况需要任何特定的。
1. String.IsNullOrEmpty()
2. str == null
3. str == null || str == String.Empty
4. str == null || str == ""
5. str == null || str.length == 0
答案 0 :(得分:19)
使用选项1。
如果您特别想检查null
或空字符串,则没有理由使用string.IsNullOrEmpty
以外的任何内容。这是在.NET中这样做的规范方式,任何性能差异几乎肯定都可以忽略不计。
这是premature optimization的教科书示例;通过各种方式,编写高效的代码,但不要因为没有合理的性能提升而浪费开发时间。请记住,您作为开发人员的时间通常远比CPU的时间更有价值。
Quoth Donald Knuth:
我们应该忘记小的效率,大约97%的时间说:过早的优化是所有邪恶的根源。
如果您的应用程序真的需要这种级别的微优化,那么您可能不应该使用.NET。
答案 1 :(得分:3)
你也关心空白吗?
如果空格有效,请使用String.IsNullOrEmpty
,否则使用String.IsNullOrWhiteSpace
(在.Net 4.0或更高版本中)。后者相当于String.IsNullOrEmpty(value) || value.Trim().Length == 0;
请参阅http://msdn.microsoft.com/en-us/library/system.string.isnullorwhitespace.aspx
答案 2 :(得分:3)
在本网站上找到了一些关于不同方法的统计数据:http://www.dotnetperls.com/empty-string
答案 3 :(得分:2)
速度上的差异是不可察觉的。
正确的方法是1,因为它最安全,最易读。
答案 4 :(得分:1)
String.IsNullOrEmpty()
非常具有可读性,可以按预期工作,很乐意坚持下去。
你是否真的有一个边缘情况下它的不足然后请加上相同的问题,这会使它更具相关性。
答案 5 :(得分:1)
使用
String.IsNullOrEmpty()
这是.NET的最佳方式。
答案 6 :(得分:0)
我个人总是使用String.IsNullOrEmpty()
。我不认为他们做任何特别的事情,除了检查它是null
还是空的,所以它不应该比手写支票慢。
此外,有时你可能会匆忙并且不小心将null
支票放在最后,得到一个令人讨厌的惊喜。 :)
答案 7 :(得分:0)
更好的方法,建议使用String.IsNullOrEmpty最快速地检查null或空字符串。因为它是String中的内置方法。
答案 8 :(得分:-1)
在您的样本中,解决方案2是最快的。但它是一个与其他解决方案不同的解决方案,因为它不会检查字符串是否为空。
否则,假设您要检查字符串是空还是空,则解决方案5是最快的。 String.IsNullOrEmpty()与解决方案5完全相同,但添加了一个函数调用(如果它在运行时没有内联)。不过,我建议第一个解决方案:
1 /性能损失可以忽略不计
2 /它更容易阅读
3 /它是一种内置方法,所以它是面向未来的