注册 登录
编程论坛 C# 论坛

string类继承了接口IComparable,为什么要实现2个CompareTo

code力力 发布于 2015-09-30 13:02, 1630 次点击

string类继承了接口IComparable,按理说只要实现第一个方法就OK了,为什么要重载第二个呢?

public int CompareTo(object value);
public int CompareTo(string strB);



还有IComparable接口和ICompare接口区别在哪里,他们的作用差异是什么?


2 回复
#2
yhlvht2015-10-07 00:08
public int CompareTo(object value); 是实现IComparable接口的
public int CompareTo(string strB); 是实现IComparable<string>接口的
并非重载
实际上就string来说,这两个方法的实现最终都调用了System.Globalization.CultureInfo.(this, strB, CompareOptions.None);方法

IComparable接口和ICompare接口区别,请阅读
http://
#3
leisiege2015-10-22 16:15
一个是IComparable  说是这个类可以做比较。说明这个类的对象可以调用compare方法,传入另一个相同的对象,返回比较结果。(obj2).
实现这个接口。相关的对象集合就可以用sort之类的排序方法了。


一个是IComparer    注意后缀是er。说明这个类是一个比较器。可以把两个对象传进他的函数中,返回比较结果。(obj1,obj2);
这个一般都是类已经做好,不想改动,只能单独做一个类专门用来比较已经做好的类对象。
1