.NET 7'de yeni [8]: C# arayüzlerinde statik soyut özellikler ve yöntemler

Womanne

Member
C# 11.0, sahiplik ve yöntem bildirimlerini kesmenizi sağlar static abstract VE static virtual. C# 10.0'da bu zaten mümkün oldu.










Holger Schwichtenberg, 53 ünlü uzmanla tavsiye ve eğitim yoluyla ve yazılımın geliştirilmesinde çok sayıda orta ve büyük şirketi destekleyen uzmanlar ağının teknik direktörüdür. Çok sayıda ulusal ve uluslararası uzman konferansındaki görünümleri, 90'dan fazla uzman kitabı ve 1.500'den fazla uzman makalesi sayesinde Holger Schwichtenberg, Almanya'daki .NET ve Web teknikleri için en iyi uzmanlardan biridir.







Örnek: İki arayüz vardır. IObjectWithID Adı ile tamsayı türünde statik bir tedarikçi sağlar ID Önce. Ona dayanan arayüz IAbc Diğer üç üyesi tercih edersiniz:



  • Resmi bir soyut istek yöntemi GetA(),,
  • Statik bir yöntem GetB() Uygulama E ile
  • Statik soyut bir yöntem GetC():

interface IObjectWithID
{
static abstract int ID { get; set; } // NEU
}

interface IAbc : IObjectWithID
{
string GetA();
static string GetB() => "B";
static abstract string GetC(); // NEU
}



Bu, sınıfın aşağıdaki uygulamasını gösterir Abc Arayüze göre IAbcO static abstract Bildirilen üyelerin artık statik üyeler olarak uygulanması gerekir:



class Abc : IAbc
{
public string GetA() => "A";
// muss nicht-statische Implementierung für GetA() liefern
public static string GetC() => "C";
// muss statische Implementierung für GetC() liefern
public static int ID { get; set; } = 1;
// muss statische Implementierung für ID liefern
}


Bu nedenle aşağıdaki kullanımlar mümkündür:





var obj = new Abc();
// Instanzmitglied:
Console.WriteLine(obj.GetA());
// statisches Mitglied direkt im Interface:
Console.WriteLine(IAbc.GetB());
// statisches Mitglied - Nutzung via Klassenname:
Console.WriteLine(Abc.ID);
// statisches Mitglied - Nutzung via Klassenname:
Console.WriteLine(Abc.GetC());


Mads Torgersen programının yöneticisine göre, Microsoft on yıldan fazla bir süredir bu dil işlevi üzerinde çalıştı. Yalnızca .NET'in çalışma zamanını değiştirme olasılığı, uygulamayı ürünün olgunluğuna yönlendirmiştir (kaynak: .NET İmrası 2022, 9.11.2022). Çalışma zamanının varyasyonları, olası kırılma değişiklikleri nedeniyle veya sadece küçük dozlarda klasik .NET çerçevesinde uygulanmamıştır.


(RME)
 
Üst