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方法。

posted @ 2022-12-11 12:15  Wen_Chen  阅读(18)  评论(0)    收藏  举报