Сообщение Re[4]: x.Equals(y) от 11.01.2017 7:03
Изменено 11.01.2017 8:40 Serginio1
Re[4]: x.Equals(y)
Здравствуйте, vdimas, Вы писали:
V>Здравствуйте, Qbit86, Вы писали:
V>>>Что не так-то?
Q>>Не так вот эта чушь: «Никак он не вызывается. x.Equals(y) — это метод базового Object», в ответ на «Пример был про то, как вызывается метод констрейнта у экземпляра типа».
V>У тебя по ссылке 4 места с x.Equals(y), например такое:
V>
Q>>Приведённый код самодостаточен, его можно скопировать в IDE и запустить
V>Ну запусти и убедись, вызывается метод класса Object.
Метод IEquatable<T>.Equals(T)
Будет вызываться метод Equals интерфейса IEquatable.
Иначе бы в public override bool Equals(Object obj) была бы бесконечная рекурсия.
Все по приоритетам. Я даже отдельно делал свой сортировщик по приоритетам для ref параметров
Приоритет вызова перегруженных методов
V>Здравствуйте, Qbit86, Вы писали:
V>>>Что не так-то?
Q>>Не так вот эта чушь: «Никак он не вызывается. x.Equals(y) — это метод базового Object», в ответ на «Пример был про то, как вызывается метод констрейнта у экземпляра типа».
V>У тебя по ссылке 4 места с x.Equals(y), например такое:
V>
V>internal sealed class ObjectEqualityComparer<T>: EqualityComparer<T>
V> {
V> [Pure]
V> public override bool Equals(T x, T y) {
V> if (x != null) {
V> if (y != null) return x.Equals(y);
V> return false;
V> }
V> if (y != null) return false;
V> return true;
V> }
V>
Q>>Приведённый код самодостаточен, его можно скопировать в IDE и запустить
V>Ну запусти и убедись, вызывается метод класса Object.
Метод IEquatable<T>.Equals(T)
public bool Equals(Person other)
{
if (other == null)
return false;
if (this.uniqueSsn == other.uniqueSsn)
return true;
else
return false;
}
public override bool Equals(Object obj)
{
if (obj == null)
return false;
Person personObj = obj as Person;
if (personObj == null)
return false;
else
return Equals(personObj);
}
Будет вызываться метод Equals интерфейса IEquatable.
Иначе бы в public override bool Equals(Object obj) была бы бесконечная рекурсия.
Все по приоритетам. Я даже отдельно делал свой сортировщик по приоритетам для ref параметров
Приоритет вызова перегруженных методов
Автор: Serginio1
Дата: 09.06.16
Дата: 09.06.16
Re[4]: x.Equals(y)
Здравствуйте, vdimas, Вы писали:
V>Здравствуйте, Qbit86, Вы писали:
V>>>Что не так-то?
Q>>Не так вот эта чушь: «Никак он не вызывается. x.Equals(y) — это метод базового Object», в ответ на «Пример был про то, как вызывается метод констрейнта у экземпляра типа».
V>У тебя по ссылке 4 места с x.Equals(y), например такое:
V>
Q>>Приведённый код самодостаточен, его можно скопировать в IDE и запустить
V>Ну запусти и убедись, вызывается метод класса Object.
Метод IEquatable<T>.Equals(T)
Будет вызываться метод Equals интерфейса IEquatable.
Иначе бы в public override bool Equals(Object obj) была бы бесконечная рекурсия.
Все по приоритетам. Я даже отдельно делал свой сортировщик по приоритетам для ref параметров при вызове через Reflection из 1С
Приоритет вызова перегруженных методов
V>Здравствуйте, Qbit86, Вы писали:
V>>>Что не так-то?
Q>>Не так вот эта чушь: «Никак он не вызывается. x.Equals(y) — это метод базового Object», в ответ на «Пример был про то, как вызывается метод констрейнта у экземпляра типа».
V>У тебя по ссылке 4 места с x.Equals(y), например такое:
V>
V>internal sealed class ObjectEqualityComparer<T>: EqualityComparer<T>
V> {
V> [Pure]
V> public override bool Equals(T x, T y) {
V> if (x != null) {
V> if (y != null) return x.Equals(y);
V> return false;
V> }
V> if (y != null) return false;
V> return true;
V> }
V>
Q>>Приведённый код самодостаточен, его можно скопировать в IDE и запустить
V>Ну запусти и убедись, вызывается метод класса Object.
Метод IEquatable<T>.Equals(T)
public bool Equals(Person other)
{
if (other == null)
return false;
if (this.uniqueSsn == other.uniqueSsn)
return true;
else
return false;
}
public override bool Equals(Object obj)
{
if (obj == null)
return false;
Person personObj = obj as Person;
if (personObj == null)
return false;
else
return Equals(personObj);
}
Будет вызываться метод Equals интерфейса IEquatable.
Иначе бы в public override bool Equals(Object obj) была бы бесконечная рекурсия.
Все по приоритетам. Я даже отдельно делал свой сортировщик по приоритетам для ref параметров при вызове через Reflection из 1С
Приоритет вызова перегруженных методов
Автор: Serginio1
Дата: 09.06.16
Дата: 09.06.16