我对列表排序方法如何处理排序有问题。鉴于以下元素:为什么列表<T>。排序方法重新排序等于IComparable <T>元素?
class Element : IComparable<Element>
{
public int Priority { get; set; }
public string Description { get; set; }
public int CompareTo(Element other)
{
return Priority.CompareTo(other.Priority);
}
}
如果我尝试这样排序是:
List<Element> elements = new List<Element>()
{
new Element()
{
Priority = 1,
Description = "First"
},
new Element()
{
Priority = 1,
Description = "Second"
},
new Element()
{
Priority = 2,
Description = "Third"
}
};
elements.Sort();
然后第一个元素是此前第二个元素“秒”。或者,换句话说,这个断言失败:
Assert.AreEqual("First", elements[0].Description);
为什么.NET重新排序名单时的元素本质上是相同?如果比较返回一个非零值,我只想重新排列列表。
功能请求稳定的排序方法https://github.com/dotnet/corefx/issues/4696 – 2017-11-27 11:04:53