Neden yapar .4.0 bu dizi farklı tür NET .NET 3.5?
This stackoverflow question NaN değerleri ile çift sıralama diziler hakkında ilginç bir soru gündeme getirdi. OP aşağıdaki kodu gönderildi
static void Main(string[] args)
{
double[] someArray = { 4.0, 2.0, double.NaN, 1.0, 5.0, 3.0, double.NaN, 10.0, 9.0, 8.0 };
foreach (double db in someArray)
{
Console.WriteLine(db);
}
Array.Sort(someArray);
Console.WriteLine("\n\n");
foreach (double db in someArray)
{
Console.WriteLine(db);
}
Console.ReadLine();
}
Sen altında bu çalıştırın .NET 3.5 çerçeve, dizisi aşağıdaki gibi sıralanır
1,4,NaN,2,3,5,8,9,10,NaN
Senin altında çalışacak .NET 4.0, dizi biraz daha mantıklı bir şekilde sıralanır:
NaN,NaN,1,2,3,4,5,8,9,10
İçinde garip gibi olmasını anlayabiliyorum .NET 3.5 NaN, daha az eşit ya da daha büyük bir şey değil çünkü). Ayrıca yaptığı gibi, bir bakıma anlayabilirim .NET 4.0. Benim sorum, neden bu 4.0 3.5 değişti mi? Ve bu değişim için Microsoft belgelerine mi?
CEVAP
Hata düzeltme. Hata ayrıntıları ile geri bildirim raporu is here. Hata raporu için Microsoft'un cevabı:
Bu hata şu: etkilediğini unutmayın
- Dizi.Dizi Çift içerir. () sıralama, NaN
- Dizi.Bu dizi de içerir. () sıralama, NaN
- yukarıda herhangi bir ziyaretçi Listesinde örneğin.Listesi Çift içerir. () sıralama, NaN
Bu hata çalışma zamanı bir sonraki sürümde sabit olacak; o zamana kadar doğru sıralama yapar özel bir IComparer kullanarak çalışabilirsiniz. Geçici çözüm açıklamalarda belirtildiği gibi, Karşılaştırıcısı kullanmayın.Bu NaN doğru işlemez bu tür rutin bir kısayol ile-kasalı özel olduğu için varsayılan. Bunun yerine, eşdeğer bir karşılaştırma sağlar, ama özel-kasalı olmayacak kendi karşılaştırıcısı sağlayabilir.
Neden C# farklı iki int dizi sözdizimi...
c neden initializer_list davranış için...
Neden Koleksiyon yapar.sıralama Merges...
Neden sıralanmamış bir dizi daha hızlı...
Neden&; dizi yineleme için... "* o kad...