C# 中的 Icompare 接口和 IComparable 接口有什么区别??

2025-05-15 15:20:31
推荐回答(1个)
回答1:

似乎MSDN上是不太推荐使用ICompare的。

1、ICompare可以带两个参数,可以通过自己写enum或者switch等来实现一个类的不同属性之间的分类比较,对用户来说可以进行选择。它使用的是:IComparer.Compare

// IComparer impl.
int IComparer.Compare(object o1, object o2)
{
Car t1 = (Car)o1;
Car t2 = (Car)o2;
return String.Compare(t1.PetName, t2.PetName);
}

2、IComparable是system.collection 中默认的方法;使用CompareTo方法:

// IComparable implementation.
int IComparable.CompareTo(object o)
{
Car temp = (Car)o;
if(this.CarID > temp.CarID)
return 1;
if(this.CarID < temp.CarID)
return -1;
else
return 0;
}

3、但是在public class Car : IComparable时,sort方法只能是对一个Car属性进行排序(这是sort的默认方法,它有三个override方法),比如car有id和petName两个属性,此时只能选择一个来排序。而ICompare则可以通过写enum等代码来实现带参数的排序(参数为enum类型),参数指定了以id排序或者以petName排序。

不清楚为什么微软要写两个接口,干吗整合呢?继续学习它……

你看明白了吗?希望对你有帮助呀