В приведенном ниже коде мне было интересно, почему XOR (^) используется для комбинирования идентификаторов составных элементов композиции (это источник от MonoCross 1.3)?XOR для идентификации объекта
ли побитовое исключающее ИЛИ
MXViewPerspective
объектаPerspective
иModelType
элемент используется для уникальной идентификации экземпляра?Если да, то есть ли имя для этого свойства операции XOR (как XOR-ing два значения (то есть, хэш-коды) гарантирует уникальность)?
public class MXViewPerspective : IComparable
{
public MXViewPerspective(Type modelType, string perspective)
{
this.Perspective = perspective;
this.ModelType = modelType;
}
public string Perspective { get; set; }
public Type ModelType { get; set; }
public int CompareTo(object obj)
{
MXViewPerspective p =(MXViewPerspective)obj;
return this.GetHashCode() == p.GetHashCode() ? 0 : -1;
}
public static bool operator ==(MXViewPerspective a, MXViewPerspective b)
{
return a.CompareTo(b) == 0;
}
public static bool operator !=(MXViewPerspective a, MXViewPerspective b)
{
return a.CompareTo(b) != 0;
}
public override bool Equals(object obj)
{
return this == (MXViewPerspective)obj;
}
public override int GetHashCode()
{
return this.ModelType.GetHashCode()^this.Perspective.GetHashCode();
}
public override string ToString()
{
return string.Format("Model \"{0}\" with perspective \"{1}\"", ModelType, Perspective);
}
}
Спасибо.
Большое спасибо за отличный ответ! ... Что это в вашем профиле pic, его любопытное страшно! – samosaris
Изменено 5 секунд назад :) - http://www.mnn.com/earth-matters/animals/photos/13-of-the-ugliest-animals-on-the-planet/blobfish – Leeor