Nouvelles Du Monde

Nouveau dans .NET 7 [9]: Surcharge des opérateurs dans les interfaces à partir de C# 11.0

Nouveau dans .NET 7 [9]: Surcharge des opérateurs dans les interfaces à partir de C# 11.0

Depuis la première version de C#, le langage de programmation a permis la surcharge des opérateurs. C# 11.0 introduit la possibilité de définir une surcharge d’opérateur dans une interface pour fournir une valeur par défaut ou un point commun entre les implémentations. Seulement puisque C# est 11.0 static abstract autorisé dans les interfaces.

docteur Holger Schwichtenberg est expert en technologie en chef chez MAXIMAGO, qui propose un développement de logiciels axé sur l’innovation et l’expérience, y compris dans des domaines hautement critiques liés à la sécurité. Il est également à la tête du réseau d’experts www.IT-Visions.de, qui soutient de nombreuses moyennes et grandes entreprises avec des conseils et une formation dans le développement et l’exploitation de logiciels avec 38 experts renommés.

Une interface avec un opérateur surchargé pourrait ressembler à ceci :

namespace de.WWWings;
 
public interface IFlug 
  where TSelf : IFlug
{
 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);
}

L’un ou l’autre se demandera pourquoi l’interface doit être générique. La raison en est simple : vous finissez par en vouloir un Flug-Objet simplement avec + peut ajouter jusqu’à un passager. Sans l’implémentation générique, vous ne pourriez avoir qu’une variable de type IFlug ajouter au passager.

Lire aussi  Silent Hope : L'exploration de l'abîme à la recherche de l'espoir perdu

Enfin, l’implémentation de la classe nécessite toujours l’implémentation de l’interface : IFlug:

namespace de.WWWings
{
 
 public partial class Flug : IFlug
 {
  …
 
  /// 
  /// Operatorüberladung fuer die Buchung eines Flugs 
  /// durch Addition eines Flug- und eines Passagier-Objekts.
  /// 
  /// Flugobjekt
  /// Passagierobjekt
  /// Flugobjekt mit hinzugefügten Passagier
  public static Flug operator +(Flug flug,
                                PassagierSystem.Passagier pass)
  {
   pass.Buchen(flug);
   return flug;
  }
 
 }
}


(rme)

Vers la page d’accueil

Facebook
Twitter
LinkedIn
Pinterest

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

ADVERTISEMENT