C# object.ReferenceEquals(obj1,obj2)和“==”的区别?什么情况下,同时用它们两个结果不一样.例子.谢谢.

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/16 03:26:48
C#object.ReferenceEquals(obj1,obj2)和“==”的区别?什么情况下,同时用它们两个结果不一样.例子.谢谢.C#object.ReferenceEquals(obj1,o

C# object.ReferenceEquals(obj1,obj2)和“==”的区别?什么情况下,同时用它们两个结果不一样.例子.谢谢.
C# object.ReferenceEquals(obj1,obj2)和“==”的区别?
什么情况下,同时用它们两个结果不一样.例子.谢谢.

C# object.ReferenceEquals(obj1,obj2)和“==”的区别?什么情况下,同时用它们两个结果不一样.例子.谢谢.
首先,Object.ReferenceEquals()、Equaql、==、都可以用来比较两个对象
1,Object.Reference是静态方法,不能重写,Equals是虚方法可以重写,==可以做运算符重载
2,在对一种类型的两个对象进行比较时,如果这个类里没有重写equals方法和重载==运算符,那么这三种情况会得到一样的结果
3,如果对比的类型是重写了equals和==运算符,那可能得到的结果就是不一样的,这要看重写的方法体和重载==的方法体
public override bool Equals(Person obj)
{
return 1==1;
}
public static bool operator==(Person p1,Person p2)
{
return p1.Age==p2.Age;
}
//这种情况下,比较两个Peson对象只要调用Equals方法,都会得到true,Referernce会得到false,如果p1和p2的Age一样也会得到true
最后,一个类的两个对象,如果调用以上三个方法得到了不同的结果,那么这个类一定重写了equals方法或都重载了==运算符(同时必须重载!=运算符)