c# - 空引用检查的良好做法是什么?

标签 c# performance

<分区>

检查对象的空引用的最有效方法是什么?我见过各种代码示例,它们具有不同的检查方式,以下是最有效的还是被认为是最佳实践?

Object.ReferenceEquals(item, null)

item == null

item != null

Object.Equals(item, null)

谢谢

最佳答案

  1. Object.ReferenceEquals(item, null) 比较引用和等于 item == null
  2. Object.Equals(item, null) 比较引用类型的引用和值类型的按位比较,但在反射器中它等于 (item == null) || ((item != null && null != null) && item.Equals(null))
  3. item != null code 并不总是等于 !(item == null),但结果当然应该相等。
  4. item == null code 不等于 null == item,它类似于 typeof(item).Equals(object)object.Equals(typeof(item)) 方法调用。

它的不同之处在于您可以覆盖 !===Equals。 使用具有已知实现的方法,null == item 更易于编码,但更难阅读。 Object.ReferenceEquals(null, item) 可能会更快,也可能不会。

附言也使用 string.IsNullOrEmpty(item)

关于c# - 空引用检查的良好做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4850053/

相关文章:

python - 查找数据区间并对其进行排序

c# - 高效实现 "ThenBy"排序

c# - 如何动态地垂直增长表单并将文本框向下移动适当的量?

c# - 在 Web 项目中添加 PresentationCore 程序集引用

c# - 内置类型的通用 EventArgs

c# - 将最短路径中的所有节点作为对象列表返回

Java:非常有效地将字节流转换为对象

c# - 如何在众多网站中共享通用功能?

mysql - 随机化大型 MySQL 表中的时间戳列

performance - hbase 过滤器 - 它表现良好吗