DotnetDojo

Développer des applications modernes avec les technologies Microsoft et Open source

  • Blog
  • Vidéos
  • Formations
  • Outils

Guide sur la surcharge d’opérateurs

Aujourd’hui, je vous propose un petit tutoriel qui présente la surcharge d’opérateurs en C#.
La surcharge d’opérateurs permet de modifier le comportement des opérateurs +, -, *, /, = …
La liste de tous les opérateurs surchargeables est disponible sur le site de Microsoft : Liste des opérateurs surchargeables en C#.

Contexte

Pour cet exemple, je vous propose de mettre en place une nouvelle classe Monnaie qui permet d’effectuer des calculs sur des monnaies du même type.
Cette classe aura donc deux propriétés : Valeur et Type. La classe sera immutable comme les chaines de caractères par exemple.

[csharp] public classe Monnaie
{
public double Valeur { get; private set; }
public string Type { get; private set; }

public Monnaie(double valeur, string type)
{
Valeur = valeur;
Type = type;
}

public override string ToString()
{
return Valeur + " " + Type;
}
}
[/csharp]

Pour permettre le calcul sur de la monnaie, il est nécessaire de définir quelques opérateurs. Dans l’exemple, je vous propose de définir l’opérateur d’addition :

[csharp] public static Monnaie operator +(Monnaie a, Monnaie b)
{
CheckTypes(a, b);
return new Monnaie(a.Valeur + b.Valeur, a.Type);
}

public static void CheckTypes(Monnaie a, Monnaie b)
{
// vérifier que a et b ne soient pas null
if (a == null || b == null)
throw new ArgumentNullException();

// vérifier que les deux monnaies sont du même type
if (a.Type != b.Type)
throw new ArgumentNullException();
}
[/csharp]

Petite remarque : ces deux méthodes sont à ajouter dans la classe Monnaie.

A partir de ce moment-là, vous pourrez utiliser l’opérateur pour additionner deux monnaies. Par exemple :

[csharp] void Main()
{
Monnaie a = new Monnaie(12, "EUR");
Monnaie b = new Monnaie(15, "EUR");
Monnaie c = a+b;

Console.WriteLine(c); // affiche normalement "27 EUR"
}
[/csharp]

Pour aller plus loin

La surcharge d’opérateur est très pratique si vous créez de nouveaux types « mesurables » qu’il faudra additionner, soustraire, multiplier…

Désormais, c’est à vous de jouer. Je vous invite à télécharger le code d’exemple et à ajouter une surcharge de l’opérateur – (soustraction) ou * (multiplication) pour essayer.

[ninja-inline id=3695]

Besoin de résultats rapides ?

Découvrez les formations vidéos que je propose :

  

 

Formations en présentiel (dans toute la France)

Découvrez également les formations C# et .NET que je donne en présentiel (en France)

A propos de DotnetDojo

Pascal Lacroix

Je m’appelle Pascal et je suis passionné par le développement logiciel, l’efficacité et l’entrepreneuriat. Sur DotnetDojo, je vous propose des méthodes pour apprendre à développer des applications modernes avec les technologies Microsoft et Open Source.

En savoir plus

Liens complémentaires

  • A propos de DotnetDojo
  • 18 principes pour professionnaliser le développement logiciel
  • Boite à outils du développeur
  • Tous les articles
  • Liste des formations
  • Contact

Copyright 2019 Jupiteo · Mentions légales · Contact · CGV · Offres d'emploi .NET · Formations Dotnet