Opérateurs surchargeables (Guide de programmation C#)
Mise à jour : novembre 2007
C# permet aux types définis par l'utilisateur de surcharger des opérateurs en définissant des fonctions de membre statique à l'aide du mot clé operator. Tous les opérateurs ne peuvent pas être surchargés et d'autres présentent des limitations, comme l'indique le tableau suivant :
Opérateurs |
Surchargeabilité |
---|---|
Ces opérateurs unaires peuvent être surchargés. |
|
Ces opérateurs binaires peuvent être surchargés. |
|
Les opérateurs de comparaison peuvent être surchargés (mais consultez la remarque qui suit cette table). |
|
Les opérateurs logiques conditionnels ne peuvent pas être surchargés, mais ils sont évalués à l'aide de & et |, qui peuvent être surchargés. |
|
L'opérateur d'indexation de tableau ne peut pas être surchargé, mais vous pouvez définir des indexeurs. |
|
L'opérateur de cast ne peut pas être surchargé, mais vous pouvez définir de nouveaux opérateurs de conversion (consultez explicit et implicit). |
|
Les opérateurs d'assignation ne peuvent pas être surchargés, mais +=, par exemple, est évalué à l'aide de +, qui peut être surchargé. |
|
Ces opérateurs ne peuvent pas être surchargés. |
Remarque : |
---|
Les opérateurs de comparaison, s'ils sont surchargés, doivent l'être en paires. En conséquence, si == est surchargé, != doit l'être également. L'inverse est également vrai, comme pour < et >, et pour <= et >=. |
Surcharger un opérateur sur une classe personnalisée requiert la création d'une méthode sur la classe avec la signature appropriée. La méthode doit être nommée "opérateur X" où X est le nom ou le symbole de l'opérateur qui est surchargé. Les opérateurs unaires ont un paramètre ; les opérateurs binaires ont deux paramètres. Dans chaque cas, un paramètre doit être du même type que la classe ou struct qui déclare l'opérateur, comme le montre l'exemple suivant :
public static Complex operator +(Complex c1, Complex c2)
Pour plus d'informations, consultez Comment : utiliser la surcharge d'opérateur pour créer une classe de nombres complexes (Guide de programmation C#).
Voir aussi
Concepts
Référence
Instructions, expressions et opérateurs (Guide de programmation C#)
Opérateurs (Guide de programmation C#)