Tag: ic Comparable

实现IComparable

我正在将IComparable归类为类似对象的排序。 我的问题是为什么它将类型转换为int32? 数组的Sort()似乎将数组中的每个类型转换为我用于比较的类型。 可比: public class Person:IComparable { protected int age; public int Age { get; set; } public int CompareTo(object obj) { if(obj is Person) { var person = (Person) obj; return age.CompareTo(person.age); } else { throw new ArgumentException(“Object is not of type Person”); } } } } class Program { static void Main(string[] […]

为什么在实现CompareTo时我必须重载运算符?

假设我有一个实现IComparable的类型。 我原本以为通过调用CompareTo来预期运算符== , != , > , < , >=和<=将“自动工作”是合理的,但如果我想使用它们,我必须全部覆盖它们。 从语言设计的角度来看,有这样一个很好的理由吗? 是否有任何情况下,当A>B对Compare(A,B)>0表现不同时,真的有用吗?