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

來源:互聯網
上載者:User

標籤:style   blog   color   strong   資料   line   

在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。具體執行個體就不示範了。

 

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

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.