2010-04-13 71 views
26

設A是與一些成員的x,y的一類,Z:等於方法的默認行爲是什麼?

Class A { 
    int x; 
    int y; 
    String z; 
    ... 
} 

A是一個對象,以便它繼承在對象中定義的「等於」的功能。 這個函數的默認行爲是什麼?它是檢查成員的平等還是檢查參考平等?

回答

42

的Equals 的默認實現支持 引用類型參考平等,和值類型按位相 。引用相等 表示對比引用 的對象引用表示相同的對象。 按位相等意味着被比較的對象 具有相同的二進制 表示形式。

http://msdn.microsoft.com/en-us/library/bsc2ak47.aspx

+3

事情實際上是值類型更加複雜:它不是跳投biwise相等比較。有關詳細信息,請參閱此問題http://stackoverflow.com/q/8315656/129073 – Gebb 2011-11-29 21:14:18

+0

字符串是特殊的。 string.equals是按位相等的,而string是引用類型。 – 2014-12-30 01:14:56

+4

@WillYu不是按位平等。它測試字符是否相同。按位相等意味着所有的.NET元數據(例如字符串是否被執行)都是相同的。它也不是特殊的(在這方面),它只是覆蓋Equals,並且重載(in)等於操作符。它的默認實現仍然是引用相等。 – Aidiakapi 2015-04-19 10:54:27

3

如果不覆蓋檢查參考值等於

相關問題