我試圖實現JObjects
緩存。如何爲JObject創建唯一的哈希碼?
我很驚訝地看到他們沒有重寫GetHashCode
方法,因此我不能將它用作唯一鍵。
由於我的json的相當大,我不想使用JObject.ToString().GetHashCode
作爲解決方案。
我確實看到他們有一個名爲GetDeepHashCode
的內部方法,但實現基於其他受保護的屬性,因此我無法「複製」代碼並從中創建擴展方法。
我也不想使用反射和調用內部GetDeepHashCode
方法。
我正在尋找一種方法來爲JObject
創建一個唯一的緩存密鑰,我不希望該方法在性能方面更加昂貴。
您確定要將GetHashCode用作唯一鍵嗎?根據定義,不同的對象不需要具有不同的哈希碼 –
您是否希望哈希碼在往返於字符串表示的往返之後相同?因爲一個'JValue'可以包含一個'double',並且double [不會在沒有精度損失的情況下往返移動](http://stackoverflow.com/questions/24299692/why-is-a-round-trip-conversion-via -a串而不是安全換一個雙)。 – dbc
@HaraldCoppoolse - 我明白,並且我明白,當碰撞時,Equals方法被調用。這就是您重寫GetHashCode時需要覆蓋Equals的原因。 由於他們沒有重寫GetHashCode,我正在尋找一個快速的方法來做到這一點。 –