Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Maîtriser la surcharge d'opérateurs en C# pour types personnalisés

On peut redéfinir ou surcharger la plupart des opérateurs intégrés C# pour les utiliser avec des types utilisateur. Un opérateur surchargé est une fonction avec le mot-clé operator suivi du symbole.

Implémentation

Exemple : surcharge de + pour une classe Boite :

public static Boite operator+ (Boite b, Boite c)
{
    Boite boite = new Boite();
    boite.longueur = b.longueur + c.longueur;
    boite.largeur = b.largeur + c.largeur;
    boite.hauteur = b.hauteur + c.hauteur;
    return boite;
}

Exemple complet

using System;

namespace ApplicationSurchargeOperateurs
{
    class Boite
    {
        private double longueur, largeur, hauteur;
        
        public double ObtenirVolume() { return longueur * largeur * hauteur; }
        public void DefinirLongueur(double len) { longueur = len; }
        public void DefinirLargeur(double bre) { largeur = bre; }
        public void DefinirHauteur(double hei) { hauteur = hei; }
        
        // Surcharge +
        public static Boite operator+ (Boite b, Boite c)
        {
            Boite boite = new Boite();
            boite.longueur = b.longueur + c.longueur;
            boite.largeur = b.largeur + c.largeur;
            boite.hauteur = b.hauteur + c.hauteur;
            return boite;
        }
    }
    
    class Test
    {
        static void Main(string[] args)
        {
            Boite b1 = new Boite();
            Boite b2 = new Boite();
            Boite b3 = new Boite();
            double volume = 0.0;
            
            b1.DefinirLongueur(6.0); b1.DefinirLargeur(7.0); b1.DefinirHauteur(5.0);
            b2.DefinirLongueur(12.0); b2.DefinirLargeur(13.0); b2.DefinirHauteur(10.0);
            
            volume = b1.ObtenirVolume();
            Console.WriteLine("Volume Boîte 1 : {0}", volume);
            
            volume = b2.ObtenirVolume();
            Console.WriteLine("Volume Boîte 2 : {0}", volume);
            
            // Addition d'objets
            b3 = b1 + b2;
            volume = b3.ObtenirVolume();
            Console.WriteLine("Volume Boîte 3 : {0}", volume);
            
            Console.ReadKey();
        }
    }
}

Résultat :

Volume Boîte 1 : 210
Volume Boîte 2 : 1560
Volume Boîte 3 : 5400

Opérateurs surchargeables et non surchargeables

Catégorie Opérateurs Surchargeable
Unaires+, -, !, ~, ++, --Oui
Binaires arithmétiques+, -, *, /, %Oui
Comparaison==, !=, <, >, <=, >=Oui
Logiques conditionnels&&, ||Non (directement)
Assignation composés+=, -=, *=, /=, %=Non
Autres=, ., ?:, ->, new, is, sizeof, typeofNon

Exemple étendu : surcharge comparaison et ToString

// Dans classe Boite...
public static bool operator == (Boite g, Boite d)
{
    return g.longueur == d.longueur && g.hauteur == d.hauteur && g.largeur == d.largeur;
}

public static bool operator != (Boite g, Boite d) { return !(g == d); }
public static bool operator < (Boite g, Boite d) { return g.longueur < d.longueur && g.hauteur < d.hauteur && g.largeur < d.largeur; }
public static bool operator > (Boite g, Boite d) { return g.longueur > d.longueur && g.hauteur > d.hauteur && g.largeur > d.largeur; }
public static bool operator <= (Boite g, Boite d) { return g.longueur <= d.longueur && g.hauteur <= d.hauteur && g.largeur <= d.largeur; }
public static bool operator >= (Boite g, Boite d) { return g.longueur >= d.longueur && g.hauteur >= d.hauteur && g.largeur >= d.largeur; }

public override string ToString()
{
    return String.Format("({0}, {1}, {2})", longueur, largeur, hauteur);
}

Langue C

  1. Opérateurs C# — Guide complet des opérateurs en C#
  2. Opérateur ternaire C# : Guide concis pour les expressions conditionnelles
  3. Maîtriser la surcharge de méthodes en C# : Concepts, exemples et bonnes pratiques
  4. Maîtriser la surcharge de constructeurs en C#
  5. Maîtriser la surcharge d'opérateurs en Python : guide pratique
  6. L'opérateur instanceof en Java : guide complet
  7. Robot DIY inspiré de Wall‑E : Raspberry Pi dans une boîte de CD recyclée
  8. Maintenance impliquant les opérateurs : les gains l'emportent-ils sur les coûts cachés ?
  9. Surcharge d'opérateurs en C++ : Guide pratique avec exemples de code