好吧,我只是使用==(如果你试图避免一个自定义的相等运算符,也许转换为object- 它将是一个nop强制转换)
除了,我的钱会随之而来object.ReferenceEquals(obj, null),但你也可以使用,object.Equals(obj, null)因为它处理null等.
为了完整性:为什么我只使用==/ !=?简单:编译器可以直接执行此操作.用于对对象进行空检查的IL实际上是:
而已.两条IL指令.它甚至不执行"加载null,等式检查" - 因为"true"的定义是"任何不是0/null",而"false"是"0/null".
对于类似的东西ReferenceEquals,那就是:
我知道我更喜欢......