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

来源:学生作业帮助网 编辑:作业帮 时间:2024/12/01 00:34:27
C# object.ReferenceEquals(obj1,obj2)和“==”的区别?什么情况下,同时用它们两个结果不一样.例子.谢谢.
xTnA}7l 257nƘ,E(XV*j lw3W/$asΜյ}J&p"׷ӑx LB~_[]m':1t2.l?QI26Oh/K32zCFqZdT!# }_ XWpQ-"TvFsEgBpS'1P1Z`5pT@oLϰژ}|*(+;w+4ߐ,MQ2B/4yͳ.锓$:r8b zTsSb&vwkpLn}VQb!G/ *\ny E\tIguZAk9©q+LVvA`{¼rnl"LiLMG[1rk*Jܷh֒JI}>i8>!|K")xp(EZ$h-TYZBU!5< |o70ӽSd!랆J`U)-%Q Borh*}j)n2~WZ:>`"T+\f 0cH9љ䡧.fAxkF@B4J};/!\֋`R$g;A

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方法或都重载了==运算符(同时必须重载!=运算符)