c#如何判斷兩個對象是否相等


在c#中判斷對象相等,這是對引用類型進行判斷,而不是對值類型,如果是對字符串,或者是數值進行判斷相等只需要用==運算符就可以了。

對兩個對象用==運算符,只能判斷他們兩個在內存中的地址是否一樣的。

 

 1.對一個類只實例化一次

向那些賦值來賦值去的引用如果沒有new實例化一個對象的話,那么這些賦值來,賦值去的對象指向的都是同一地址。舉一個例子有一個類People

People p1=new  People();

People p2=p1;

People p3;

p3=p2;

像這樣對象p1 ,p2,p3 ,是完全指向的同一的內存地址,他們實際上是同一個對象,所有用==或者用equal方法判斷都是返回true;

2、對一個類實例化多次但是每次實例的初值都是一樣的

申明兩個對象,每個對象都實例化一次,並且把每個類的數據即字段或者屬性都是設置統一初始值,如下:

 

People p1=new People();
p1.Name="haha";

People p2 =new People();
p2.Name="haha";

 

假設People類是有一個屬性就是Name,那么我將這p1,p2兩個對象都實例化了,但是把用p1==p2得到的卻是false,這就更加印證了對象用==運算符,只能是對對象名的引用地址進行比較,像這種,兩次實例化,那么在內存空間中就分配了不一樣的空間,即不同的地址,雖然他們內容中中的數據是一樣。

注意:但是我們就是要比較對象在內存中的各個數據都要相等則是相等,而不是比較內存地址,該怎么辦。

我們都知道如果兩者的內存的地址都相等了,那么兩個對象實質上是同一個對象,只是這兩個對象在程序中擁有不同的名字而已,如果想比較不同對象是否相等(不是指地址相等)。就應該重寫Object對象的Equal方法,在里面具體判斷兩個對象的各個數據是否相等,如果相等返回true,只要有一項不相等則返回false。具體實例就不演示了。

 

 如果有說的不對的,或者不好的地方,希望各位能夠指正。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM