c# - 在 CompareTo() 覆盖中有效禁用 Sort()?

标签 c# vb.net sorting collections icomparer

我的类的 CompareTo() 方法是动态的,范围从简单比较到多列比较。这一切都在运行时确定,而且效果很好。

但在某些情况下,我希望任何使用默认比较对我的对象集合进行排序的尝试都什么都不做。

CompareTo() 只为任何比较返回 0,令我惊讶的是,这是行不通的。该列表以某种奇怪的、看似随机的顺序重新排列。

有没有办法在 CompareTo() 方法实现中做到这一点?我宁愿不必通过覆盖 Sort() 在集合级别处理这个问题。

最佳答案

那是因为 QuickSort 不是 stable sort .我看不到在 CompareTo 方法中修复此问题的好方法,除非您可以通过某种方式获取元素的索引。

关于c# - 在 CompareTo() 覆盖中有效禁用 Sort()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2413398/

相关文章:

sql - 天数时间总和

c# - 字符串如何在堆中分配内存?

vb.net - Visual Basic(用于应用程序)学习资源

c# - 在探测 privatePath 时使用绝对路径

c# - 使用 C# 测试网站

c# - XAML:访问用户控件内的控件

java - 在java 8中首先对整数列表进行排序,然后按可被10整除进行排序

java - Java 与 C# 中的事件处理

sorting - 如何按具有不同 JPA 规范的获取属性进行排序

php - 如何将我的数组分成 3 个元素的组,按最后一个元素对它们进行排序并显示元素?