我正在尋找緩存其唯一性由該對象內的所有屬性的組合確定的對象。 我的目的是這樣的:如何緩存具有多個屬性的對象
public double A { get; set; }
public double B { get; set; }
public short C { get; set; }
public bool D { get; set; }
public double E { get; set; }
public double F { get; set; }
public double G { get; set; }
public double H { get; set; }
public double J { get; set; }
public double K { get; set; }
public double[] L { get; set; }
public double[] M { get; set; }
我可能會覆蓋GetHashCode
,並完成類似return A^B^C etc...
不過,我很擔心,我將有很多衝突。
什麼是最好的方式來緩存這樣的對象?
最好的方法是覆蓋GetHashCode並執行類似於A^B^C的操作......如果您測試併發生碰撞,請考慮如何針對您的需求調整公式。不要重新發明輪子 – 2013-03-14 22:22:55
由於您的屬性具有公共設置器,因此不能保證在'.GetHashCode'連續調用之間數據不會發生變化。如果該狀態發生變化,那麼對於任何依賴散列碼的任何內容(例如字典)都會導致完全中斷行爲。 – 2013-03-14 22:33:19
你是對的關心;如果你的屬性傾向於「集羣」,那麼xoring最終可能會清除很多位。 – 2013-03-15 23:14:31