C# object.ReferenceEquals(obj1,obj2)和“==”的区别?什么情况下,同时用它们两个结果不一样.例子.谢谢.
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/31 16:43:43
![C# object.ReferenceEquals(obj1,obj2)和“==”的区别?什么情况下,同时用它们两个结果不一样.例子.谢谢.](/uploads/image/z/14872744-64-4.jpg?t=C%23+object.ReferenceEquals%28obj1%2Cobj2%29%E5%92%8C%E2%80%9C%3D%3D%E2%80%9D%E7%9A%84%E5%8C%BA%E5%88%AB%3F%E4%BB%80%E4%B9%88%E6%83%85%E5%86%B5%E4%B8%8B%2C%E5%90%8C%E6%97%B6%E7%94%A8%E5%AE%83%E4%BB%AC%E4%B8%A4%E4%B8%AA%E7%BB%93%E6%9E%9C%E4%B8%8D%E4%B8%80%E6%A0%B7.%E4%BE%8B%E5%AD%90.%E8%B0%A2%E8%B0%A2.)
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方法或都重载了==运算符(同时必须重载!=运算符)