고유성이 해당 개체의 모든 속성을 조합하여 결정되는 개체를 캐시하려고합니다. 내가 가진 객체가이 같은 것입니다 :여러 속성을 사용하여 개체를 캐시하는 방법
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이 많은 비트를 지울 수 있습니다. –