首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 結構與類別總結 (4) — Equals 比較行為差異與 String 特殊性

     編輯:關於C語言

Equals() 比較邏輯差異

  • 結構 (值類型):Equals() 比較**值**是否相等。
  • 類別 (參考類型):Equals() 比較**參考位址**是否相同。

範例:


ClassPerson clsX = new ClassPerson();
clsX.LastName = "Bejaoui"; clsX.FirstName = "Bechir";
ClassPerson clsY = new ClassPerson();
clsY.LastName = "Bejaoui"; clsY.FirstName = "Bechir";
if (clsX.Equals(clsY)) Console.WriteLine("clsX = clsY"); // 輸出 clsX != clsY

兩個不同物件,參考位址不同,故 false。若改為 clsY = clsX,則參考相同,回傳 true。

進階相等性比較

  • 可覆寫 Equals() 自訂邏輯,**必須同時覆寫 GetHashCode()**。
  • 參考類型可用 ReferenceEquals() 比較參考位址。
  • 可多載 == 運算子。
  • String 特殊:雖為參考類型,但採 Immutable 模式。直接定義兩個相同字串字面值,實為同一物件,Equals() 與 ReferenceEquals() 均回傳 true。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved