Zachowanie listy <T> .Sort w .NET 4.5 zmieniony z .NET 4.0?
Mam następujący test wewnątrz projektu kierowanego na .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);
}
}
Jeśli uruchomię go na komputerze z zainstalowanym tylko .NET 4.0, nie powiedzie się. Jeśli uruchomię go na maszynie z zainstalowanym tylko .NET 4.5, to przechodzi.
Zakładam, że w .NET 4.5 implementacjaSort
został zmieniony, aby zachować porządek podczas sortowania listy obiektów, z których każdy powraca0
zCompareTo
.
Teraz odłóż na bok oczywisty szaleństwo tego testu. Wiem, że to szalone poleganie na tego rodzaju zachowaniach.
Pewno to jest przełomowa zmiana? Nie znajduje się na liścieta strona o kompatybilności między .NET 4.0 i 4.5.
Czy jest ku temu powód? Czy czegoś mi brakuje? Czy jest inna strona, która pokazuje rzeczywiste zmiany? Czy powinienem po prostu usiąść i przestać panikować?