String.Empty,null,Length或String.IsEmptyOrNull?

时间:2012-01-05 12:01:34

标签: c# string

哪种方式确实是检查空字符串的最快方法,并且有任何特定情况需要任何特定的。

1. String.IsNullOrEmpty()

2. str == null

3. str == null || str == String.Empty

4. str == null || str == ""

5. str == null || str.length == 0

9 个答案:

答案 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 /它是一种内置方法,所以它是面向未来的