Equals和"=="
不管是Equals还是“==”都倾向于:对于引用类型看是否指向同一对象;对于值类型,判断类型的值是否相等。
对于 对象来说,地址不同的情况下,就算对象的值相同,两个对象也不会相等。如果想要两个对象在对象的值相等的情况下使得两个对象相等,就应该重载Equals运算符。
public override bool Equals(object obj)
{
return this.Name == (obj as EqualsTestClass).Name;
}
在用object声明对象去获取同一个子类实例时:equals是相同的,"=="是不同的。
object i = 2;
object j = 2;
Console.WriteLine(i.Equals(j)); //true
Console.WriteLine(i == j); //false
重写Equals方法时也应该实现一个类型安全的接口IEquatable<T>,同时重写GetHashCode方法。
浙公网安备 33010602011771号