Я ищу объекты кэша, уникальность которых определяется комбинацией всех свойств внутри этого объекта. Объект У меня есть что-то вроде этого:Как кэшировать объект с несколькими свойствами
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 ... Если вы протестируете и появились столкновения, то выясните, как настроить формулу для ваших нужд. Не изобретайте велосипед –
Поскольку у ваших свойств есть публичные сеттеры, нет гарантии, что данные не будут меняться между последовательными вызовами '.GetHashCode'. Если это состояние изменится, это приведет к полностью нарушенному поведению для всего, что зависит от хеш-кодов, таких как словари. –
Вы имеете право на беспокойство; если ваши свойства имеют тенденцию «кластеризовать», тогда возможно, что xoring завершит очистку множества бит. –