通常,人们说最好说 s.Length == 0
而不是 s == ""
。但似乎这将是一个微优化,也会使其更难阅读。此外,与后者相比,前者最多可节省 60 毫秒。
是否有我遗漏的原因,例如 s.Length == 0
是否实际上更好地传达了意图?还是通常需要比较多个字符串是否为空?
编辑:我知道 IsNullOrEmpty,但是当人们回答这个问题时,他们经常提到长度检查比与空字符串进行比较要好。
EDIT2:没有询问执行此操作的最佳方法,对于这两种情况都是 IsNullOrEmpty,但我想问的是为什么不可忽略的少数人坚持认为长度检查更优越。我假设他们有充分的理由这么说,并且想知道它们是什么。
EDIT3:如开头所述,我确实知道一个比另一个快。问题是,这是人们推荐它的原因吗?一些时间显示这并没有导致显着差异。
最佳答案
你是对的,它本质上是一个微优化。测试长度确实使 FxCop/代码分析保持安静 - 理由是性能,如 documented in MSDN .
至于哪个更具可读性,这是主观的,我相信任何开发人员都会理解。由于它们在语义上不同(如果 s 为 null,s.Length == 0
会抛出异常,而 s == ""
则不会),可读性不是唯一的标准考虑。
在您不确定字符串不为空的情况下,String.IsNullOrEmpty
或 String.IsNullOrWhiteSpace
可能更具可读性(即表达您的意图) .
关于c# - 为什么建议检查字符串长度以确定是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6376239/