日期:2014-05-16  浏览次数:20718 次

Collection的Sort方法为什么取决于IComparable接口,而不是重载'<' '>'这样的操作符?
既然C#可以重载(用static的方式)来比较两个object,也就是operator < 和operator >甚至operator <= 和operator >=,为什么集合类的比较函数Sort不是用重载的运算符来实现,而是要用IComparable的接口实现?

话句话说,既然比较运算取决于IComparable的函数实现,那么我感觉重载上面的4个运算符就没有意义了。
------解决方案--------------------
操作符重载是古老的技术了,接口编程才是现在。

例如,一个对象可能有多种排序方式,这时用操作符重载就不合适了。

其实LINQ才是未来,用它排序好方便。
------解决方案--------------------
这么大的差距,一边只要实现一个接口,一边要重载四个运算符,不累死才怪
------解决方案--------------------
IComparable.CompareTo 的返回值是 int,已经把四个运算符都涵盖了。

重载四个运算符就太啰嗦了。
------解决方案--------------------
目前只用过IComparable
重载运算符只有上学的时候读过,还没用到。