有人可以解释一下这个重载是什么意思吗?
public static bool operator ==(Shop lhs, Shop rhs) { if (Object.ReferenceEquals(lhs, null)) { if (Object.ReferenceEquals(rhs, null)) { return true; } return false; } return lhs.Equals(rhs); }
我从未在重载中看到过Object.ReferenceEquals
此重载旨在比较两个实例Shop
.它用于Object.ReferenceEquals
确定其中一个实例是否null
.
它不能使用lhs == null
或rhs == null
,因为这会再次调用operator ==
并创建一个无限递归导致a StackOverflowException
.
如果两个实例都null
返回true(因为它们相等).
如果只有一个实例,null
则返回false(因为它们不相等).
如果这两种情况都没有null
它返回的结果Equals
的执行Shop
.