C#:对象的 == 和 != 运算符的默认实现

2024-02-12

我想知道相等运算符(== 和 !=)的默认实现是什么

Is it?

public static bool operator ==(object obj1, object obj2)
{
    return obj1.Equals(obj2);
}
public static bool operator !=(object obj1, object obj2)
{
    return !obj1.Equals(obj2);
}

所以我只需要重写 Equals 方法还是还需要重写相等运算符?


不,它是not那 - 默认情况下,参考检查是否相等。运营商如== are not多态且不call默认情况下任何多态。例如:

string x = "Hello";
string y = new String("Hello".ToCharArray());
Console.WriteLine(x == y); // True; uses overloaded operator

object a = x;
object b = y;
Console.WriteLine(a == b); // False; uses default implementation

你不能override相等运算符,但你可以overload它们,就像字符串一样。无论你与否should则是另一回事了。我想我usually如果我压倒一切的话Equals,但不一定总是。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#:对象的 == 和 != 运算符的默认实现 的相关文章

随机推荐