Overblog Tous les blogs Top blogs Économie, Finance & Droit Tous les blogs Économie, Finance & Droit
Editer l'article Suivre ce blog Administration + Créer mon blog
MENU

Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions

Publicité

Surcharger un operateur (operator)

Surcharger un operateur (operator)

Exemple ici je vais surcharger les operateurs + et – permettant de renvoyer directement le résultat des prix des 2.
Je crées une classe Product
public class Product
    {
        private int _ProductID;
 
        public int ProductID
        {
            get { return _ProductID; }
            set { _ProductID = value; }
        }
 
        private string _ProductName;
 
        public string ProductName
        {
            get { return _ProductName; }
            set { _ProductName = value; }
        }
        private Decimal _UnitPrice;
 
        public Decimal UnitPrice
        {
            get { return _UnitPrice; }
            set { _UnitPrice = value; }
        }
        public Product()
            { }
 
            public Product(int ProductID,string ProductName,Decimal UnitPrice)
            {
                  this.ProductID = ProductID;
                  this.ProductName = ProductName;
                  this.UnitPrice = UnitPrice;
            }
 
        public static Decimal operator +(Product p1,Product p2)
        {
            return p1.UnitPrice + p2.UnitPrice;
        }
        public static Decimal operator -(Product p1, Product p2)
        {
            return p1.UnitPrice + p2.UnitPrice;
        }
    }
 
Utilisation
Ici je n’ai qu’à faire p1 + p2 au lieu de p1.UnitPrice + p2.UnitPrice
 private void button1_Click(object sender, EventArgs e)
        {
            Product p1 = new Product(1, "Chai", 18);
            Product p2 = new Product(1, "Chang", 19);
 
            Decimal result = p1 + p2;
            MessageBox.Show(result.ToString());
        }
 
Une autre utilisation assez connue est celle faite par les Nullables
Celles-ci retournent un type (ex :int )
Ce qui permet de faireNullable<int> intNullable = 10;
        // exemple avec le type int
        public static implicit operator int(intNullable i)
        {
            return i.Value;
        }
        public static explicit operator intNullable(int i)
        {
            return new intNullable(i);
        }
        // avec les generics
        public static implicit operator T?(T value)
        {
            return new T?(value);
        }
 
        public static explicit operator T(T? value)
        {
            return value.Value;
        }
 
Publicité
Retour à l'accueil
Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article