Для ссылочного типа (класс), как point3 (к примеру), это излишество, не хватает:Наиболее полное Равно реализации для значений и ссылочных типов соответственно
#region System.Object Members
public override bool Equals (object obj)
{
//return this == (Point3) obj;
if (obj == null)
{
return false;
}
if (this.GetType () != obj.GetType ())
{
return false;
}
return this.Equals ((Point3) obj);
}
public override int GetHashCode ()
{
return this.X.GetHashCode ()^this.Y.GetHashCode ()^this.Z.GetHashCode ();
}
public override string ToString ()
{
return String.Format ("[{0}, {1}, {2}]", this.X, this.Y, this.Z);
}
#endregion
#region IEquatable<Point3> Members
public bool Equals (Point3 other)
{
if (other == null)
{
return false;
}
if (ReferenceEquals (this, other))
{
return true;
}
if (this.GetHashCode () != other.GetHashCode ())
{
return false;
}
if (!base.Equals (other))
{
return false;
}
return this == other;
}
#endregion
public static bool operator == (Point3 v0, Point3 v1)
{
return (v0.X.IsEqual (v1.X)) && (v0.Y.IsEqual (v1.Y)) && (v0.Z.IsEqual (v1.Z));
}
public static bool operator != (Point3 v0, Point3 v1)
{
return !(v0 == v1);
}
Пожалуйста, внести изменения или опубликовать новую для как значения, так и ссылочные типы, которые я могу использовать в своих базовых типах (значение и ссылка), не задумываясь слишком много каждый раз, когда я реализую его снова.
EDIT: Это для неизменяемых типов.
Erm ... В чем вопрос? – configurator
Почему вы просите других людей сделать вашу работу за вас? Я могу понять, спрашивая совета, но просить нас выяснить, что проблема для вас - отличный способ закрыть ваш пост. – jrista
Да, я на самом деле упомянул, что это был тип ref. –