Opérateurs surchargeables (Guide de programmation C#)
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 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é. |
|
=., ? :, ? ?, - >, =>, f (x), As, activé, non activé, valeur par défaut, délégué, est, nouveau, sizeof, typeof |
Ces opérateurs ne peuvent pas être surchargés. |
Notes
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
Référence
Instructions, expressions et opérateurs (guide de programmation C#)
Opérateurs (guide de programmation C#)