Mad*_*ess 19 c# equality referenceequals
有人可以解释一下这个重载是什么意思吗?
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);
}
Run Code Online (Sandbox Code Playgroud)
我从未在重载中看到过Object.ReferenceEquals
Ren*_*ogt 37
此重载旨在比较两个实例Shop.它用于Object.ReferenceEquals确定其中一个实例是否null.
它不能使用lhs == null或rhs == null,因为这会再次调用operator ==并创建一个无限递归导致a StackOverflowException.
如果两个实例都null返回true(因为它们相等).
如果只有一个实例,null则返回false(因为它们不相等).
如果这两种情况都没有null它返回的结果Equals的执行Shop.