Я написал целую кучу объектов, которые являются составными частями коллекций и на которых мне нужно будет много сортировать и искать. На большинстве этих объектов я реализовал и переопределил метод Equals, IEquatable и operator! и operator==.
Теперь я хочу использовать List<T>.Sort для объекта, который выполнил все вышеописанное, и, оказывается, мне нужно реализовать IComparable для выполнения пользовательской сортировки.
Почему Сортировка использует IComparable и что является точкой для IEquatable во всех моих объектах?
И что же делает переопределение Object.Equal со всем этим?