Поведение списка <T>. Сортировка в .NET 4.5 изменилась с .NET 4.0?
У меня есть следующий тест внутри проекта, ориентированного на .NET 4.0:
[TestFixture]
public class Donkey
{
[Test]
public void TestListSorting()
{
var expected = new[]
{
MockRepository.GenerateStub<IComparable>(),
MockRepository.GenerateStub<IComparable>()
};
var sorted = new List<IComparable>(expected);
CollectionAssert.AreEqual(expected, sorted);
sorted.Sort();
CollectionAssert.AreEqual(expected, sorted);
}
}
Если я запускаю его на компьютере, на котором установлен только .NET 4.0, он не работает. Если я запускаю его на компьютере с установленным только .NET 4.5, он проходит.
Я предполагаю, что в .NET 4.5 реализацияSort
был изменен для поддержания порядка при сортировке списка объектов, каждый из которых возвращает0
отCompareTo
.
Now, put aside the obvious insanity of this test. I know it's crazy to rely on this kind of behaviour.
Surely это серьезное изменение? Это не указано наэта страница о совместимости .NET 4.0 и 4.5.
Для этого есть причина? Я что-то пропустил? Есть ли другая страница, которая показывает реальные изменения? Должен ли я просто сесть и перестать паниковать?