Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Présentation

  • : Romagny13 - Du .NET,du pur .NET
  • Romagny13 - Du .NET,du pur .NET
  • : Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
  • Contact

Recherche

Articles Récents

5 août 2007 7 05 /08 /août /2007 22:49
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;
        }
 

Partager cet article

Repost 0
Published by Romagny13 - dans C 1.0- 2.0- 3.0
commenter cet article

commentaires