.NET 7’deki yenilikler [9]: C# 11.0’dan beri arayüzlerde operatör aşırı yüklenmesi

Saberie

Active member
C#’ın ilk sürümünden bu yana, programlama dili operatörün aşırı yüklenmesine izin verdi. C# 11.0, uygulamalar arasında bir varsayılan veya ortaklık sağlamak için bir arabirimde bir işleç aşırı yüklemesi tanımlama yeteneği sunar. C# 11.0 olduğu için static abstract arayüzlerde izin verilir.







Dr Holger Schwichtenberg, güvenlikle ilgili son derece kritik alanlarda bile yenilik ve deneyim odaklı yazılım geliştirme sunan MAXIMAGO’da 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 tanınmış uzmanla danışmanlık ve eğitimle destekleyen uzman ağı www.IT-Visions.de’nin başkanıdır.







Aşırı yüklenmiş işleci olan bir arabirim şöyle görünebilir:


namespace de.WWWings;

public interface IFlug<TSelf>
where TSelf : IFlug<TSelf>
{
string AbflugOrt { get; set; }
double Auslastung { get; }
DateTime Datum { get; set; }
long FlugNr { get; set; }
short FreiePlaetze { get; set; }
bool Nichtraucherflug { get; set; }
short Plaetze { get; set; }
string Route { get; }
string ZielOrt { get; set; }

public static abstract Flug operator
+(TSelf flug, de.WWWings.PassagierSystem.Passagier pass);
}



Biri veya diğeri, arayüzün neden genel olması gerektiğini soracaktır. Nedeni basit: sonunda bir tane istiyorsun Flug-Sadece şununla itiraz et: + bir yolcuya kadar ekleyebilir. Genel uygulama olmadan, yalnızca bir tür değişkeniniz olabilir. IFlug yolcuya ekleyin.

Son olarak, sınıf uygulamasının hala arayüz uygulamasına ihtiyacı vardır. : IFlug<Flug>:


namespace de.WWWings
{

public partial class Flug : IFlug<Flug>
{


/// <summary>
/// Operatorüberladung fuer die Buchung eines Flugs
/// durch Addition eines Flug- und eines Passagier-Objekts.
/// </summary>
/// <param name="flug">Flugobjekt</param>
/// <param name="pass">Passagierobjekt</param>
/// <returns>Flugobjekt mit hinzugefügten Passagier</returns>
public static Flug operator +(Flug flug,
PassagierSystem.Passagier pass)
{
pass.Buchen(flug);
return flug;
}

}
}




(rm)



Haberin Sonu
 
Üst