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.

'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