Я перезаписываю функцию GetHashCode()
для моего класса Vector.Это всего лишь 3 поплавка X
, Y
, Z
.Мне интересно, как лучше это сделать.
public override int GetHashCode()
{
var sum = X + 3 * Y + 5 * Z;
return sum.GetHashCode();
}
Мне нужно это, чтобы быстро найти Вектор в большой коллекции.
Я не хочу просто возвращаться X.GetHashCode()
или около того, потому что это привело бы к слишком большому количеству проверок равенства для прямых линий.
Проблема с моей текущей реализацией состоит в том, что, если числа с плавающей точкой действительно большие, я могу получить целочисленное переполнение .
Заранее спасибо.