重载运算符==后,如何比较两个变量是否指向同一个对象?

Hao*_*Hao 5 c# operator-overloading operators equals-operator

重载比较运算符,如何比较两个变量是否指向同一个对象(即不是值)

public static bool operator ==(Landscape a, Landscape b)
{
    return a.Width == b.Width && a.Height == b.Height;
}

public static bool operator !=(Landscape a, Landscape b)
{
    return !(a.Width == b.Width && a.Height == b.Height);
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*ham 8

使用Object.ReferenceEquals静态方法.

当然,为了使==和!=方法保留其全部功能,您还应该重写Equals和GetHashCode,以便它们向调用者返回一致的响应集.


小智 5

检查两者是否指向同一个对象。您应该使用 Object.ReferenceEquals 方法。如果两者相同或均为 null,则返回 true。否则会返回 false