我对 List Sort 方法如何处理排序有疑问。给定以下元素:
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();
那么第一个元素就是之前的第二个元素“Second”。或者,换句话说,这个断言失败了:
Assert.AreEqual("First", elements[0].Description);
当元素基本相同时,为什么 .NET 会重新排序我的列表?如果比较返回非零值,我希望它只对列表重新排序。