繁体   English   中英

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

[英]String.Empty, null, Length, or String.IsEmptyOrNull?

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

1. String.IsNullOrEmpty()

2. str == null

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

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

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

使用选项1。

如果您特别想检查null或空字符串,那么没有理由使用string.IsNullOrEmpty以外的任何内容。 这是在.NET中这样做的规范方式,并且性能上的任何差异几乎肯定都可以忽略不计。

这是过早优化的教科书范例; 通过各种方式,编写有效的代码,但不要浪费开发时间,因为没有合理的性能提升。 请记住,你的时间作为一个开发者通常比CPU的时间有价值。

Quoth Donald Knuth:

我们应该忘记小的效率,大约97%的时间说:过早的优化是所有邪恶的根源。

如果您的应用程序真正需要这种级别的微优化,那么您可能不应该使用.NET。

你也关心空白吗?

如果空格有效,请使用String.IsNullOrEmpty ,否则使用String.IsNullOrWhiteSpace (在.Net 4.0或更高版本中)。 后者相当于String.IsNullOrEmpty(value) || value.Trim().Length == 0; ,但性能更高 String.IsNullOrEmpty(value) || value.Trim().Length == 0;

请参阅http://msdn.microsoft.com/en-us/library/system.string.isnullorwhitespace.aspx

在这个网站上找到了一些关于不同方法的统计数据: http//www.dotnetperls.com/empty-string

速度的差异将是不明显的。

正确的方法是1,因为它是最安全和最好的可读性。

String.IsNullOrEmpty()具有非常高的可读性,可以按预期工作,很乐意坚持下去。

你真的有一个边缘情况下它的不足然后请添加相同的问题,这将使它更相关。

使用

String.IsNullOrEmpty()

这是.NET的最佳方式。

我个人总是使用String.IsNullOrEmpty() 我不认为他们做任何特别的事情,除了检查它是否为null或空,所以它不应该比手写支票慢。

此外,有时你可能会匆忙,并在最后意外地将null检查结果,得到一个令人讨厌的惊喜。 :)

它更好的方式,并建议使用String.IsNullOrEmpty最快速地检查null或空字符串。 因为它在String中的内置方法。

在您的样本中,解决方案2是最快的。 但它是一个与其他解决方案不同的解决方案,因为它不会检查字符串是否为空。

否则,假设您要检查字符串是空还是空,则解决方案5是最快的。 String.IsNullOrEmpty()与解决方案5完全相同,但添加了一个函数调用(如果它在运行时没有内联)。 不过,我建议第一个解决方案:

1 /性能损失可以忽略不计

2 /它更容易阅读

3 /它是一种内置方法,因此它具有前瞻性

暂无
暂无

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

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