c# - 为什么建议检查字符串长度以确定是否为空?

标签 c#

通常,人们说最好说 s.Length == 0 而不是 s == ""。但似乎这将是一个微优化,也会使其更难阅读。此外,与后者相比,前者最多可节省 60 毫秒。

是否有我遗漏的原因,例如 s.Length == 0 是否实际上更好地传达了意图?还是通常需要比较多个字符串是否为空?

编辑:我知道 IsNullOrEmpty,但是当人们回答这个问题时,他们经常提到长度检查比与空字符串进行比较要好。

EDIT2:没有询问执行此操作的最佳方法,对于这两种情况都是 IsNullOrEmpty,但我想问的是为什么不可忽略的少数人坚持认为长度检查更优越。我假设他们有充分的理由这么说,并且想知道它们是什么。

EDIT3:如开头所述,我确实知道一个比另一个快。问题是,这是人们推荐它的原因吗?一些时间显示这并没有导致显着差异。

最佳答案

你是对的,它本质上是一个微优化。测试长度确实使 FxCop/代码分析保持安静 - 理由是性能,如 documented in MSDN .

至于哪个更具可读性,这是主观的,我相信任何开发人员都会理解。由于它们在语义上不同(如果 s 为 null,s.Length == 0 会抛出异常,而 s == "" 则不会),可读性不是唯一的标准考虑。

在您不确定字符串不为空的情况下,String.IsNullOrEmptyString.IsNullOrWhiteSpace 可能更具可读性(即表达您的意图) .

关于c# - 为什么建议检查字符串长度以确定是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6376239/

相关文章:

C# 删除事件处理程序

c# - 变量如何知道它实现的类型?

c# - 从 Microsoft Visual Web Developer 2008 连接到 MySQL

C# 测试运行配置(*.runsettings)

c# - 在 C# 中获取以下命令行参数(数组中的元素)

c# - Entity Framework 、TPT 继承和多语言支持

c# - DataGridView 绑定(bind)问题 : "Index -1 does not have a value."

c# - WebRequest 将 URL 转换为 Xamarin 中的编码 (MonoTouch)

c# - 我怎样才能改进 LINQ?

c# - 将 UTF8 数据插入 SQL Server 2008