检查字符串内容?string Length Vs Empty String

Hay*_*dar 14 language-agnostic compiler-construction string optimization

哪个更有效的编译器和检查字符串是否为空的最佳实践?

  1. 检查字符串的长度是否== 0
  2. 检查字符串是否为空(strVar =="")

此外,答案是否取决于语言?

Stu*_*Stu 17

是的,这取决于语言,因为字符串存储在语言之间有所不同.

  • Pascal型字符串:Length = 0.
  • C风格的字符串:[0] == 0.
  • .NET : .IsNullOrEmpty.

等等.

  • 我认为OP询问空字符串验证,而不是无效,所以当你已经知道字符串不为null时,使用IsNullOrEmpty只是另一个不必要的检查.所以OP的问题是需要更多性能,myString.Length> 0或myString!="".阅读http://stackoverflow.com/questions/10230/checking-for-string-contents-string-length-vs-empty-string/2306659#2306659 (2认同)

Der*_*ark 14

在使用C风格(以null结尾)字符串的语言中,比较""会更快.这是一个O(1)操作,而采用C风格字符串的长度是O(n).

在将长度存储为字符串对象(C#,Java,...)的一部分的语言中,检查长度也是O(1).在这种情况下,直接检查长度更快,因为它避免了构造新空字符串的开销.

  • 在C#中,如果你与string.Empty进行比较,那么你就是在与已构造的字符串进行比较.然后它也是O(1). (4认同)