元組作為輕量級的資料結構,在c#中具有廣泛的引用。但是元組的比較一直以來都是對於成員的依次比較。好在c#7.3開始,引入了元素的相等性比較,讓元組的易用性有了大幅提公升。
微軟對此的介紹是「從 c# 7.3 開始,元組型別支援==
和!=
運算子。 這些運算子按順序將左邊引數的每個成員與右邊引數的每個成員進行比較,且比較是短路計算」
所以我們可以寫出這樣的**,對元組進行比較
var left =(5
,10);
var right =(5
,10);
console.
writeline
(left == right)
;
此外,元組的比較也支援可空型別的提公升轉換,以及型別的隱式轉換,例如下面**中可空型別與非空型別的比較,(int,int)和(long,long)之間的比較
var left =(5
,10);
var right =(5
,10);
(int a,
int b)
? nullabletuple = right;
console.
writeline
(left == nullabletuple.value)
;console.
writeline
(left == nullabletuple);(
long a,
long b) longtuple =(5
,10);
console.
writeline
(left == longtuple)
;
本文會經常更新,請閱讀個人部落格原文: ,以避免陳舊錯誤知識的誤導,同時有更好的閱讀體驗。 C 高階程式設計 比較物件的相等性
1.referenceequals 是乙個靜態方法,測試兩個引用是否引用類的同乙個例項,特別是兩個引用是否包含記憶體中的相同位址,它認為null等於null。2.虛擬的equals 該方法是虛擬的,所以可以在自己的類中重寫它,從而按值來比較物件。3.靜態的equals 與虛擬例項版本的作用相同,區別...
C 比較物件的相等性 長文慎入
system.object 定義了3個不同的方法來比較物件的相等性 referenceequals 和兩個版本的 equals 再加上比較運算子 實際上有4種比較相等性的方法。這些方法有一些細微的區別,下面就介紹它們 1.referenceequals 方法 referenceequals 是乙個靜...
C 深入理解比較物件的相等性
引用型別都繼承自object型別,object型別有如下的用來比較物件相等性的方法 1 static bool referenceequals object obja,object objb 該方法是乙個靜態方法,比較的是兩個物件的引用,其中null等於null。2 virtual bool equ...