C 判等物件是否相等的方法彙總

2022-10-06 15:51:18 字數 1718 閱讀 2219

一、判斷相等的3個方法

1.例項方法

public virtual bool equals(object obj)

2.比較值型別靜態方法

public static bool equals(object obja, object objb)

3.比較引用型別靜態方法

pub static bool referenceequals(object obja, object objb)

二、判斷引用型別是否相等

class program

}public class team

}public struct teamstruct

}執行結果:

false

false

分析:引用型別比較的是引用位址,由於t1和t2指向不同的物件例項,所以dou都返回false。  

三、判斷值型別是否相等

1.值型別判斷方法

派生於system.valuetype,對程式設計客棧system.object中的虛方法equals(object obj)進行了重寫

public override bool equals(object obj)

runtimetype type = (runtimetype) base.gettype();

runtimetype type2 = (runtimetype) obj.gettype();

if (type2 != type) //比較兩個物件是否是同一型別

object a = this;

ijmwkevdxuyf (cancomparebits(this)) //物件成員如果存在對於堆的引用返回false

//反射獲取值型別的所有字段

fieldinfo fields = type.getfields(bindingflags.nonpublic | bindingflags.public | bindingflags.instance);

for (int i = 0; i < fields.length; i++) //遍歷字段,對各個字段進行比較

} else if (!obj3.equals(obj4))

} return true;

}2.用==判斷是否相等

static void main(string args)

出現編譯錯誤。原因是值型別不能用==進行判斷。

3.用equals()例項方法判斷是否相等

static void main(string args)

返回true。

可見,如果值型別的字段相等,那就相等。

static void main(string args)

返回false,當然,值型別的字段有不相等,就會整個不相等。

4.判斷複雜值型別是否相等

即值型別中包含引用型別和值型別。

class program

}public class team

}public struct teamstruct

}public struct nationalteam

}返回true,會遍歷比較引用型別成員和值型別成員。在nt1和nt2中,型別為team的引用型別成員_team指向同乙個物件例項,  型別為teamstruct的值型別成員_structteam相等,所有整個返回。如下圖所示:

本文標題: c#判等物件是否相等的方法彙總

本文位址:

06判等物件是否相等

判斷相等的3個方法 例項方法 public virtual bool equals object obj 比較值型別靜態方法 public static bool equals object obja,object objb 比較引用型別靜態方法 public static bool referen...

C 判斷兩個物件是否相等

首先在c 中判斷物件相等,是對於引用型別的,兩個 物件用 只是判斷他們的記憶體位址是否一樣 對於字串或者數值,判斷相等只需要用 運算 引用型別 1.對乙個類只是例項化一次 向那些只有賦值沒有new例項化乙個物件的話,拿這些物件指的都是乙個位址 people p1 newpeople people p...

c 如何判斷兩個物件是否相等

在c 中判斷物件相等,這是對引用型別進行判斷,而不是對值型別,如果是對字串,或者是數值進行判斷相等只需要用 運算子就可以了。對兩個物件用 運算子,只能判斷他們兩個在記憶體中的位址是否一樣的。1.對乙個類只例項化一次 向那些賦值來賦值去的引用如果沒有new例項化乙個物件的話,那麼這些賦值來,賦值去的物...