GC. GetGeneration, Int32.MaxValue döndürebilir
.NET 8'den başlayarak, GC.GetGeneration GC olmayan yığınlarda ("dondurulmuş" yığınlar olarak da adlandırılır) ayrılan ve daha önce 2 döndürdüğü nesneler için döndürebilir Int32.MaxValue . Çalışma zamanının GC olmayan yığınlarda nesneleri ne zaman ve nasıl ayırdığı bir iç uygulama ayrıntısıdır. Örneğin, dize değişmez değerleri GC olmayan bir yığında ayrılır ve aşağıdaki yöntem çağrısı döndürebilir Int32.MaxValue.
int gen = GC.GetGeneration("string");
Önceki davranış
Daha önce, GC.GetGeneration 0-2 aralığında tamsayı değerleri döndürülürdü.
Yeni davranış
.NET 8'den başlayarak 0, GC.GetGeneration 1, 2 veya Int32.MaxValuedeğerini döndürebilir.
Sürüm kullanıma sunulmuştur
.NET 8 Önizleme 4
Hataya neden olan değişikliğin türü
Bu değişiklik davranışsal bir değişikliktir.
Değişiklik nedeni
.NET, büyük nesne yığını (LOH), küçük nesne yığını (SOH) ve sabitlenmiş nesne yığını (POH) olan mevcut yığınlardan biraz farklı yeni, GC olmayan bir yığın türü kullanıma sunulmuştur.
Önerilen eylem
'den GC.GetGeneration()
dönüş değerini dizi dizin oluşturucu olarak veya beklenmeyen herhangi bir şey Int32.MaxValue için kullanmadığınızdan emin olun.
Etkilenen API’ler
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin