程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> c#如何判斷兩個對象是否相等

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

編輯: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。具體實例就不演示了。

 

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved