IComparer应返回什么表示“保留现有的排序顺序”

时间:2013-04-08 15:28:46

标签: c# icomparer

我正在实施自定义comparer,以便为各种视图中的项目应用自定义排序顺序。

有些时候我发现我想维护项目的现有顺序,在这种情况下我应该从Compare方法实现返回什么?仅仅返回0就足够了,还是我主动需要确定哪个项目首先出现?

2 个答案:

答案 0 :(得分:2)

(此答案归功于Lee

这取决于用于进行排序的算法是stable。例如,OrderBy是稳定的,因此从Compare返回0将意味着这两个项目在列表中保留其原始顺序,但是List.Sort不是,因此从{返回0 {1}}并不保证这两个项目在排序输出中将按原始顺序排列。

答案 1 :(得分:1)

为零,但您的排序算法可能仍会更改其顺序。