Если бы мы просто писали это вручную для каждого случая, компилятор принял бы во внимание многие вещи за нас. Чаще всего на ум приходят следующие:
- Если доступна универсальная перегрузка T1.Equals или T2.Equals, она используется.
- В противном случае, если любой тип имеет неявный оператор, который позволяет нам применить (1), он используется.
- В противном случае bool Используется Equals(object) (конечно, с учетом возможных переопределений).
Как мы можем добиться того же поведения, которое обычно обеспечивает компилятор?
Мобильная версия