哪个更有效率,"data.Length==0"或“数据= = string.Empty"
本文关键字:quot Empty string 数据 data 有效率 Length | 更新日期: 2023-09-27 18:02:06
我想检查变量字符串data
是否包含空字符串。
data.Length==0
和data==string.Empty
哪个更有效?
我忘了说,data
已经检查过了,保证不是null
1亿个迭代的测试结果:
Equality operator ==: 796 ms
string.Equals: 811 ms
string.IsNullOrEmpty: 312 ms
Length: 140 ms [fastest]
Instance Equals: 1077 ms
源使用String.IsNullOrEmpty(data)
而不是
我会选择第三个,它更不容易出错:
String.IsNullOrEmpty(data)
我会说你应该使用字符串。isNullOrEmpty方法也检查空
这两个检查都不会成为你的瓶颈。但是,如果您选择第一个,如果字符串为空,您可能会遇到NullReferenceException
。第二个就不会有这个问题了
从逻辑上讲,data.Length == 0
更有效,因为它只是比较两个整数值,而data == String.Empty
比较的是字符串(尽管非常短)。
但是,编译器或框架可以进行许多优化来最小化或消除任何差异。这使得在不运行自己的计时测试的情况下很难做出绝对语句。
最后,我怀疑这种差异是否足以引起注意。
最佳实践是使用String.IsNullOrEmpty
(或者,如果它符合您的要求,从。net 4.0 - String.IsNullOrWhiteSpace
)。
如果你调用s.Length
,那么如果字符串是null
,你将得到NullReferenceException
。这意味着您需要检查if(s == null || s.Length == 0)
。这将是最有效的,可能是最快的,但您不妨使用String.IsNullOrEmpty
。
null
(null
与空字符串不同), s == string.Empty
将返回false。
就性能而言,不要再浪费时间去想它了。它几乎永远、永远、永远、永远不会影响性能。
正如人们所提到的,使用。net 4.0框架中引入的string.IsNullOrEmpty(str)
或string.IsNullOrWhiteSpace(str)
。
使用String.IsNullOrEmpty()
检查