Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
.NET 6, static
ile arabirim üyelerinin abstract
olarak işaretlenebileceği yeni bir özelliği önizler. Bu özellik, ecma 335 belirtiminde daha önce geçersiz olarak kabul edilen ara dil (IL) meta veri desenlerine izin verecek çeşitli değişiklikler içerir. Daha fazla bilgi için bkz. dotnet/runtime#49558.
Eski davranış
Statik arabirim olarak abstract
işaretlendiyse:
- C# derleyicisi CS0112 hatası oluşturdu.
- Araçlar ve diğer derleyiciler geçersiz IL meta verileri oluşturdu.
Yeni davranış
.NET 6'dan başlayarak statik arabirim üyeleri olarak abstract
işaretlenebilir ve başarıyla derlenir. Ek olarak, ecma 335 belirtimindeki değişiklikler nedeniyle oluşturulan IL meta veri desenleri artık yasal olarak kabul edilir.
Arabirim üyelerinin static abstract
uygulanması, arabirimi gerçekleştiren türler tarafından sağlanır.
Uyarı
.NET 6 için, bir arabirim üyesini olarak işaretleyebilmek için projenizdeki static abstract
gerekir.
Bu yeni yasal bir IL deseni olduğundan, mevcut araçlar ilişkili meta verileri yanlış işleyip beklenmeyen davranışlar gösterebilir. Yeni meta veri deseniyle karşılaşma olasılığı yüksektir çünkü static abstract
üyeleri içeren arabirimler artık ilkel türlerde görünmektedir, örneğin System.Int32.
Sürüm kullanıma sunulmuştur
.NET 6
Kesinti yaratan değişiklik türü
Bu değişiklik ikili uyumluluğu etkileyebilir.
Değişiklik nedeni
Bu değişiklik, statik üyeler üzerinde soyutlama ve bu statik üyeleri tanımlayan türler arasında geçerli olan genelleştirilmiş kod yazmanın hiçbir yolu olmadığından ortaya çıkmıştır. Bu durum özellikle yalnızca statik bir biçimde bulunan üye türleri (örneğin, işleçler) için sorunluydu.
Önerilen eylem
.NET ikili dosyalarını veya C# kaynak kodunu kullanan araçları, .NET temel türleri üzerinde mevcut olanlar da dahil olmak üzere yeni arabirim üyeleri kavramını static abstract
hesaba katacak şekilde güncelleştirin.
Etkilenen API'ler
Mevcut Değil