У меня возникла проблема с тем, как метод сортировки списка имеет дело с сортировкой. Учитывая следующий элемент:
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 переупорядочивает мой список, когда элементы по существу одинаковы? Я бы хотел, чтобы он только изменил порядок списка, если сравнение возвращает ненулевое значение.