![](/img/trans.png)
[英]Implement GetHashCode for IRevertibleChangeTracking class
[英]How to “delete” GetHashCode of my class
我有一個要使用相等語法比較其實例的結構。 但是我100%確信沒有任何情況可以將它們放入哈希結構中。 按照建議,每當覆蓋相等時,也需要覆蓋GetHashCode。 所以我的問題是我如何告訴編譯器在任何情況下都不需要此方法? 就像C ++ 11中的“ = delete”一樣。
而且我不想重寫,因為我真的不知道如何實現。 我的結構中有一個雙字段。 在我的相等性檢查中,允許有公差。 在這種情況下我應該如何實現GetHashCode?
謝謝!
GetHashCode
是Object
公共虛擬方法,它是CLR系統中所有對象的根類。 因此,不,您不能“刪除”該方法。 您可以覆蓋它,並在不希望用戶調用它的情況下引發異常,但是您不能按照所要求的意義“刪除”它。
對於可變引用類型, 僅在以下情況下才應覆蓋 :
否則,您不應在將對象存儲在哈希表中時對其進行修改。
為了實現自己的GetHashCode
方法,在處理多個字段時,一種生成has代碼的方法是使用XOR
組合這些字段。
關於Object.GetHashCode的文檔 <-如果您還沒有看過的話,這里有很多有用的信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.