c#與equals和gethashcode有類似的問題嗎?c#與equals和gethashcode()具有相同的問題,如Java?
的問題,如:http://onjava.com/pub/a/onjava/2006/09/13/dont-let-hibernate-steal-your-identity.html
c#與equals和gethashcode有類似的問題嗎?c#與equals和gethashcode()具有相同的問題,如Java?
的問題,如:http://onjava.com/pub/a/onjava/2006/09/13/dont-let-hibernate-steal-your-identity.html
不知道你所談論的,因爲你是一個有點含糊...
但它的問題,如果你的意思是你
有
應(如果你不」 t想要編譯器警告,或者在代碼中出現意外的行爲)覆蓋GetHashCode
當您覆蓋Equals
時,則是。
如果你的意思是在繼承方面很難定義平等,是的。
但是,.NET有IEqualityComparer<T>
接口,它經常用於相等和散列 - 容器如Dictionary<TKey, TValue>
。幾乎在需要相等/散列的框架中的所有內容都允許通過IEqualityComparer<T>
來指定行爲,這意味着如果由類型本身給出的表單不適合您的需求,則可以表達您想要的任何平等概念。
像這樣的問題:http://onjava.com/pub/a/onjava/2006/09/13/dont-let-hibernate-steal-your-identity.html – Blankman 2010-04-16 18:49:31
@Blankman:對 - 基本上你想要兩個不同的概念平等;一個由ID和一個由各個領域。這正是「IEqualityComparer
so Collections使用IEqualityComparer
您可能想要更清楚些。你是指什麼問題? – 2010-04-16 18:18:17
取決於你所稱的問題。 – 2010-04-16 18:18:30
Java的equals和getHashCode有什麼問題? – Shuo 2010-04-16 18:18:56