Ich habe ein Problem damit, wie die List Sort-Methode das Sortieren behandelt. Gegeben das folgende Element:Warum enthält die Liste <T> .Sort-Methode gleiche IComparable <T> Elemente?
class Element : IComparable<Element>
{
public int Priority { get; set; }
public string Description { get; set; }
public int CompareTo(Element other)
{
return Priority.CompareTo(other.Priority);
}
}
Wenn ich versuche, es auf diese Weise zu sortieren:
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();
Dann wird das erste Element ist das zuvor zweite Element "Second". Oder, mit anderen Worten, diese Behauptung nicht:
Assert.AreEqual("First", elements[0].Description);
Warum ist Neuordnungs .NET meine Liste, wenn die Elemente im Wesentlichen gleich sind? Ich möchte, dass es nur die Liste neu anordnet, wenn der Vergleich einen Wert ungleich null zurückgibt.
Feature-Anforderung für eine stabile Sortiermethode https://github.com/dotnet/corefx/issues/4696 –