Partager via


operator (Référence C#)

Mise à jour : novembre 2007

Utilisez le mot clé operator pour surcharger un opérateur intégré ou fournir une conversion définie par l'utilisateur dans une déclaration de classe ou de structure.

Exemple

La formulation suivante est une classe extrêmement simplifiée pour les nombres fractionnels. Elle surcharge les opérateurs + et * pour effectuer des additions et des multiplications de fractions, et fournit également un opérateur qui convertit un type fraction en type double.

class Fraction
{
    int num, den;
    public Fraction(int num, int den)
    {
        this.num = num;
        this.den = den;
    }

    // overload operator +
    public static Fraction operator +(Fraction a, Fraction b)
    {
        return new Fraction(a.num * b.den + b.num * a.den,
           a.den * b.den);
    }

    // overload operator *
    public static Fraction operator *(Fraction a, Fraction b)
    {
        return new Fraction(a.num * b.num, a.den * b.den);
    }

    // user-defined conversion from Fraction to double
    public static implicit operator double(Fraction f)
    {
        return (double)f.num / f.den;
    }
}

class Test
{
    static void Main()
    {
        Fraction a = new Fraction(1, 2);
        Fraction b = new Fraction(3, 7);
        Fraction c = new Fraction(2, 3);
        Console.WriteLine((double)(a * b + c));
    }
}
/*
Output
0.880952380952381
*/

Spécification du langage C#

Pour plus d'informations, consultez les sections suivantes dans Spécifications du langage C#.

  • 7.2.2 Surcharge d'opérateur

  • 7.2.3 Résolution de la surcharge d'opérateur unaire

  • 7.2.4 Résolution de la surcharge d'un opérateur binaire

Voir aussi

Tâches

Comment : implémenter des conversions définies par l'utilisateur entre des structs (Guide de programmation C#)

Concepts

Guide de programmation C#

Référence

Mots clés C#

implicit (Référence C#)

explicit (Référence C#)

Autres ressources

Référence C#