a.Equals(b)
Equals方法是從System.Object類別繼承而來的,因此對於所有類型都是可用的。- 預設情況下,
Equals方法執行的是引用比較,即檢查兩個物件是否引用「同一個記憶體位置」。 - 子類別可以重寫
Equals方法以提供自訂的相等性比較。
1
2
3
object a = new object();
object b = a;
bool result = a.Equals(b); // 引用比較
a == b
==操作符的行為取決於特定的類型。對於引用類型,==執行的是引用比較,與Object.ReferenceEquals方法的行為相同。- 對於值類型,
==運算子通常會執行值比較,即比較兩個物件的值是否相等。但某些值類型可以透過重寫==操作符來改變這種行為。
1
2
3
object a = new object();
object b = a;
bool result = (a == b); // 引用比較
總結
需要注意的是,對於自訂類型,如果沒有重寫 Equals 方法和 ==操作符,它們將預設執行引用比較,即比較物件的參考是否相同。
在一些常見的值類型(如 int、double 等)和字串類型上,== 運算子通常會執行值比較,而不是引用比較。但對於自訂類型,特別是引用類型,最好重寫 Equals 方法以提供有意義的相等性比較。