關於C 的Equals和Contains方法

2021-07-10 20:36:13 字數 575 閱讀 3188

今天寫**需要過濾重複的資料,因資料是用list儲存的。故此想到了contains方法,只是不太確定是否可以匹配到,於是看了下他的源

發現他先用的arrary的indexof 來操作,但是看到最後,卻發現其實是根據equals方法來判斷。

鑑於有引用型別和值型別的相等判斷會牽扯到深度的問題(即要判斷引用型別例如物件,我們判斷物件時,其實判斷的是物件裡的值是否相等。)

於是進行了乙個判斷

輸出的結果是」<>「,也就意味著判斷出來是不相等的,然後查閱發現說equals判斷時:對於值型別,相等定義為按位相等。在object這個基類中,equals方法預設為引用位址相等。

所以此方法不可行,要想通過物件的值進行判斷,只能重寫該方法了!

關於equals和「 」的詳解

首先,equals,equals最常用的是在string下呼叫,用來比較兩個字串是否相同。但實際上equals是object中的方法,string對其進行了覆寫。object中的equals方法是用來比較兩個物件相等的,但是其預設的是按位址進行比較 並不能對內容進行比較。string覆寫了此方法用來...

關於 和equals的區別

1 對於字串變數來說,使用 和 equals 方法比較字串時,其比較方法不同。比較兩個變數本身的值,即兩個物件在記憶體中的首位址。equals 比較字串中所包含的內容是否相同。2 對於非字串變數來說,和 equals 方法的作用是相同的都是用來比較其 物件在堆記憶體的首位址,即用來比較兩個引用變數是...

關於 和equals的探索

在我的概念之中,在對比兩個基本資料型別的時候,對比的是兩者的值是否相同。而在對比兩個引用資料型別的時候,比較的是兩者的記憶體位址是否相同。而equals方法,我一直認為這個方法是對比兩個引用資料型別的值是否相同的。但是,今天看到有人說,equals想要比較兩個引用資料型別的內容是否一致,需要重寫。因...