C 引用比較和內容比較

2022-03-23 09:22:49 字數 640 閱讀 6410

1、靜態方法object.referenceequal,實際實現為引用比較。

2、靜態方法object.equal, 實際實現為引用比較。(實際呼叫了例項方法equal)

3、object例項方法equal,實際實現為引用比較。(微軟原意equal應該為內容比較,但預設實現並不是這樣,開發者可以通過在自己設計的類中重寫該方法來實現內容比較。)

4、object的操作符==,實際實現為引用比較。(微軟原意==可以看作中間選項,即既可以為內容比較,也可以為引用比較,開發者可以通過在自己設計的類中重寫該方法來實現內容比較或引用比較。)

總結:在最開始,只有object類的時候,所有比較均為引用比較。

接下來:

在實現值型別的時候,微軟重寫了equal方法 和 == 操作符,實現了值型別的內容比較,所以所有值型別的equal和==均為內容比較。

在實現引用型別的時候,有部分類重寫了equal方法 和 == 操作符,實現了內容比較,典型的是string這個類。其他未重寫該方法的型別均為引用比較,因為繼承了object的實現。

建議:1、引用型別的物件想要進行內容比較,用例項方法equal,如string類。

2、引用型別的物件想要進行引用比較,用object.referenceequal。

3、值型別的比較可以用==。

指標和引用的比較

總述 使用引用 reference 和指標 pointer 都可間接訪問另乙個值,但它們之間存在兩個重要區別 1 引用總是指向某個確定物件 事實上,引用就是該物件的別名 外號 定義引用時沒有進行初始化會出現編譯錯誤 2 賦值行為上存在差異 給引用賦值修改的是該引用所關聯癿物件的值,而不是使該引用與另...

指標和引用的比較

雖然使用引用 reference 和指標都可間接訪問另乙個值,但它們之間有兩個重要區別。第乙個區別在於引用總是指向某個物件 定義引用時沒有初始化 是錯誤的。第二個重要區別則是賦值行為的差異 給引用賦值修改的是該引用所關聯的物件的值,而並不是使引用與另乙個物件關聯。引用一經初始化,就始終 指向同乙個特...

引用和指標的比較

引用和指標的比較 引用是c 中的概念,初學者容易把二者混淆。例1 int m int n m 在這裡,n相當於是m的別名,對n的任何操作就是對m的操作。n既不是m的拷貝,也不是指向m的指標,其實n就是m它自己。例2 int i 0 int j 5 int k i k j 示例程式中,k被初始化為i的...