İngilizce dilinde oku

Aracılığıyla paylaş


Arabirimlerde bildirilen statik soyut üyeler

.NET 6, arabirim üyelerinin olarak abstractişaretlendiği yeni bir özelliğin static önizlemesini sunar. 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 abstractiş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 uygulanması static abstract , arabirimi uygulayan türler tarafından sağlanır.

Not

.NET 6 için, bir arabirim üyesini olarak static abstractişaretleyebilmek için projenizdeki önizleme özelliklerini etkinleştirmeniz 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ü üyeleri olan static abstract arabirimler artık ilkel türlerde (örneğin, System.Int32) görünür.

Sürüm kullanıma sunulmuştur

.NET 6

Hataya neden olan değişikliğin 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.

.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

Yok

Ayrıca bkz.