假設我希望能夠比較兩個整數列表並將一個特定值視爲通配符。在具有通配符的類上實現GetHashCode Equatability
例如 如果-1是一張外卡,然後
{1,2,3,4} == {1,2,-1,4} //returns true
而且我正在寫一個類來包裝這一切的邏輯,所以它實現IEquatable
並在public override bool Equals()
相關的邏輯,但我有一直以爲你或多或少不得不實施GetHashCode
如果你是凌駕.Equals()
。當然,它並沒有被編譯器強制執行,但我一直覺得如果你不這樣做,那麼你就錯了。
除了我沒有看到如何在沒有違約的情況下執行.GetHashCode()
(Equal具有不同哈希的對象),或者只是執行return 1
。
想法?
你打破了平等的概念,它不再是傳遞。在你的情況下,A == B和B == C並不意味着A == C。 – AlexD
也許你需要IEqualityComparer? –
@AlexD應該是一個答案! – nawfal