.NET 7'de yeni [9]: C# 11.0 arayüzlerinde operatörlerin aşırı yüklenmesi

Womanne

Member
C#'nın ilk sürümünden, programlama dili operatörleri aşırı yükledi. C# 11.0, tüm uygulamalar için bir gereklilik veya cemaat oluşturmak için bir arayüzde bir operatörün aşırı yüklenmesi tanımlama olasılığını tanıtır. Sadece C# 11.0'dan static abstract arayüzlerde izin verilir.










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.







Aşırı yük operatörüne sahip bir arayüz aşağıdaki gibi 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 merak edecektir. Nedeni basit: sonunda istiyorsun Flug– + Bir yolcuya ekleyebilir. Genel uygulama olmadan, yalnızca türün bir değişkenine sahip olabilirsiniz IFlug Yolcuya ekleyin.

Son olarak, sınıfın uygulanmasının hala arayüzün uygulanması gerekiyor : 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;
}

}
}




(RME)
 
Üst