이 합성 GetHashCode()를 구현하는 가장 좋은 방법은 무엇입니까 :내가 간단한 클래스가
내가 해시 코드의 더 나은 분포를 얻을 것입니다 만약 내가 대신 무언가 같이했다면 내가 궁금public class TileName {
int Zoom, X, Y;
public override bool Equals (object obj)
{
var o = obj as TileName;
return (o != null) && (o.Zoom == Zoom) && (o.X == X) && (o.Y == Y);
}
public override int GetHashCode()
{
return (Zoom + X + Y).GetHashCode();
}
}
:
public override int GetHashCode()
{
return Zoom.GetHashCode() + X.GetHashCode() + Y.GetHashCode();
}
이 클래스는 사전 키로 사용되므로 괜찮은 배포인지 확인하고 싶습니다.
약간의 경고 : 'Zoom','X' 및'Y '필드가 유형 생성 후 변경 될 수 없음을 확인하십시오. 인스턴스의 해시 코드가 변경되지 않아야합니다. 그렇지 않으면 해시에서 키를 찾을 수 없게됩니다 (FxCop이이를 확인한다고 생각합니다). 'int zoom, X, Y;'호출을'read, int, Zoom, X, Y;'로 변경하여 명확하게하십시오. – Steven