C# object.ReferenceEquals(obj1,obj2)和“==”的区别?
来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/04/29 16:02:39
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方法或都重载了==运算符(同时必须重载!=运算符)
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方法或都重载了==运算符(同时必须重载!=运算符)
C# object.ReferenceEquals(obj1,obj2)和“==”的区别?
C# Object 和 object 的区别
Object.ReferenceEquals 和Object.Equals 有什么区别
object和reject的区别
object.equals(null)和object==null有什么区别
object和 thing区别
object 和object有什么区别
C#里面=>的含义和用法
C#中的write和writeline的区别
C# this和C++this 的区别?
net 和C# 中& 与&& 的区别?
C#中dictionary 和哈希表的区别?