我的类的 CompareTo()
方法是动态的,范围从简单比较到多列比较。这一切都在运行时确定,而且效果很好。
但在某些情况下,我希望任何使用默认比较对我的对象集合进行排序的尝试都什么都不做。
让 CompareTo()
只为任何比较返回 0,令我惊讶的是,这是行不通的。该列表以某种奇怪的、看似随机的顺序重新排列。
有没有办法在 CompareTo()
方法实现中做到这一点?我宁愿不必通过覆盖 Sort() 在集合级别处理这个问题。
最佳答案
那是因为 QuickSort 不是 stable sort .我看不到在 CompareTo 方法中修复此问题的好方法,除非您可以通过某种方式获取元素的索引。
关于c# - 在 CompareTo() 覆盖中有效禁用 Sort()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2413398/