.NET 7’deki yenilikler [8]: C# arabirimlerindeki statik soyut özellikler ve yöntemler

Womanne

Member
C# 11.0 özelliklerin ve yöntemlerin arayüz bildirimlerine izin verir. static abstract VE static virtual. Bu, C# 10.0’da zaten deneysel olarak mümkündü.







Dr Holger Schwichtenberg, MAXIMAGO’da Güvenlikle ilgili son derece kritik alanlarda bile yenilik ve deneyime dayalı yazılım geliştirme sunan Baş Teknoloji Uzmanıdır. Aynı zamanda, çok sayıda orta ölçekli ve büyük şirketi yazılım geliştirme ve işletim konusunda 38 ünlü uzmanla danışmanlık ve eğitimle destekleyen uzman ağı www.IT-Visions.de’nin başkanıdır.







Örnek: iki arayüz var. IObjectWithID ada sahip tamsayı türünde statik bir özellik döndürür ID Önce. Buna dayalı arayüz IAbc üç ek üye belirtir:


  • Resmi bir soyut örnek yöntemi GetA(),
  • statik bir yöntem GetB() uygulanması ile ve
  • statik bir soyut 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
}



Sınıfın aşağıdaki uygulaması bunu göstermektedir Abc arayüz tabanlı IAbcne nasıl static abstract beyan edilen üyeler artık statik üyeler olarak uygulamalıdır:


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
}


Yani 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());


Program yöneticisi Mads Torgersen’e göre Microsoft, on yıldan fazla bir süredir bu dil özelliği üzerinde çalışıyor. Yalnızca .NET çalışma zamanını değiştirme yeteneği, uygulamayı ürün olgunluğuna getirdi (kaynak: .NET Conf 2022, 9 Kasım 2022). Çalışma zamanı değişiklikleri, klasik .NET Framework’te uygulanmadı veya olası kırılma değişiklikleri nedeniyle yalnızca küçük dozlarda uygulandı.


(rm)



Haberin Sonu
 
Üst