У меня есть неизменяемая структура Vector3, и мне интересно, как лучше всего реализовать метод .Equals(), чтобы он был полезен и по-прежнему удовлетворял Рекомендации по перегрузке Equals().
Вот частичная реализация моей структуры:
public struct Vector3
{
private float _x;
private float _y;
private float _z;
public float X { get { return _x; }}
public float Y { get { return _y; }}
public float Z { get { return _z; } }
public Vector3(float x, float y, float z)
{
_x = x;
_y = y;
_z = z;
}
public override bool Equals(object obj)
{
//What should go here?
}
}
Изменить: я не хочу напрямую сравнивать каждый X, Y, Z из-за характера операций с плавающей запятой. Например, я могу определить, параллельны ли два вектора vector3, проверив, что u x v == ‹0, 0, 0>; однако с операциями с плавающей запятой это часто не удается, потому что один из нулей на самом деле равен ‹8.205348E-09>.
Я ищу метод Equals(), который немного умнее. Я хочу, чтобы он работал независимо от того, очень большие числа или очень маленькие. я