Скажем, у меня есть тип, который реализует IComparable.
Я бы счел разумным ожидать, что операторы ==, !=, >, <, >= и <= будут "просто работать" автоматически, вызывая CompareTo, но вместо этого у меня есть чтобы переопределить их все, если я хочу их использовать.
С точки зрения дизайна языка есть веская причина, по которой это было сделано так? Есть ли случаи, когда вы действительно полезны для A>B вести себя по-другому с Compare(A,B)>0?