#### В [предыдущей публикации][1] мы получили вариант реализации сравнения объектов по значению для платформы [.NET][2], на примере класса Person, включающий:	{#v-predyduschey-publikaciihttpshabrahabrrupost315168-my-poluchili-variant-realizacii-sravneniya-obektov-po-znacheniyu-dlya-platformy-nethttpswwwmicrosoftcomnet-na-primere-klassa-person-vklyuchayuschiy}
 
* перекрытие методов [Object.GetHashCode()][3], [Object.Equals(Object)][4];
* реализацию интерфейса [IEquatable (Of T)][5];
* реализацию Type-specific статических метода Equals(Person, Person) и операторов ==(Person, Person), !=(Person, Person). 
Каждый из способов сравнения для любой одной и той же пары объектов возвращает один и тот же результат:
 
**Пример кода**
    Person p1 = new Person("John", "Smith", new DateTime(1990, 1, 1));
    Person p2 = new Person("John", "Smith", new DateTime(1990, 1, 1));
    //Person p2 = new Person("Robert", "Smith", new DateTime(1991, 1, 1));
    
    object o1 = p1;
    object o2 = p2;
    
    bool isSamePerson;
    
    isSamePerson = o1.Equals(o2);
    isSamePerson = p1.Equals(p2);
    isSamePerson = object.Equals(o1, o2);
    isSamePerson = Person.Equals(p1, p2);
    isSamePerson = p1 == p2;
    isSamePerson = !(p1 == p2);
 
При этом, каждый из способов сравнения является коммутативным: 
 x.Equals(y) возвращает тот же результат, что и y.Equals(x), и т.д.
 
Таким образом, клиентский код может сравнивать объекты любым способом — результат сравнения будет детерминирован.
 
#### Однако, требует раскрытия вопрос:	{#odnako-trebuet-raskrytiya-vopros}
 
Как именно обеспечивается детерминированность результата при реализации статических методов и операторов сравнения в случае наследования — с учетом того, что статические методы и операторы не обладают полиморфным поведением.
[Читать дальше →][6]
  [1]: 
https://habrahabr.ru/post/315168/
  [2]: 
https://www.microsoft.com/net
  [3]: 
https://msdn.microsoft.com/library/system.object.gethashcode.aspx
  [4]: 
https://msdn.microsoft.com/library/bsc2ak47.aspx
  [5]: 
https://msdn.microsoft.com/library/ms131187.aspx
  [6]: 
https://habrahabr.ru/post/315258/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut