Opérateurs (Guide de programmation C#)
Mise à jour : Juillet 2008
En C#, un opérateur est un terme ou un symbole qui prend une ou plusieurs expressions (ou opérandes) comme entrées et qui retourne une valeur. Les opérateurs qui prennent un opérande, comme l'opérateur d'incrément (++) ou new, portent le nom d'opérateurs unaires. Les opérateurs qui prennent deux opérandes, comme les opérateurs arithmétiques (+, -, *, /) portent le nom d'opérateur binaires. Un opérateur, l'opérateur conditionnel (?:), prend trois opérandes et est le seul opérateur tertiaire en C#.
L'instruction C# suivante contient un opérateur unaire et un opérande. L'opérateur d'incrément, ++, modifie la valeur de l'opérande y :
y++;
L'instruction C# suivante contient deux opérateurs binaires, chacun avec deux opérandes. L'opérateur d'assignation, =, a l'entier y et l'expression 2 + 3 comme opérandes. L'expression 2 + 3 contient elle-même l'opérateur d'addition et a les valeurs entières 2 et 3 comme opérandes :
y = 2 + 3;
Un opérande peut être une expression valide de n'importe quelle taille et peut être composé de n'importe quel nombre d'autres opérations. Lorsqu'une expression est évaluée, le compilateur évalue d'abord tous les opérandes de gauche à droite. Une fois ceux-ci évalués, les opérateurs sont évalués dans un ordre particulier appelé priorité des opérateurs. Le tableau suivant divise les opérateurs en catégories basées sur le type d'opération qu'ils exécutent. Les catégories sont répertoriées par ordre de priorité.
Opérateurs principaux
Expression |
Description |
---|---|
x.y |
Accès au membre |
f(x) |
Méthode et appel de délégué |
a[x] |
Tableau et accès d'indexeur |
x++ |
Post-incrémentation |
x-- |
Post-décrémentation |
new T(...) |
Création d'objet et de délégué |
new T(...){...} |
Création d'objet avec l'initialiseur. Consultez Initialiseurs d'objets et de collection (Guide de programmation C#). |
new {...} |
Initialiseur d'objet anonyme. Consultez Types anonymes (Guide de programmation C#). |
new T[...] |
Création de tableau. Consultez Tableaux (Guide de programmation C#). |
typeof(T) |
Obtenir l'objet System.Type pour T |
checked(x) |
Évaluer l'expression dans le contexte vérifié (checked) |
unchecked(x) |
Évaluer l'expression dans le contexte non vérifié (unchecked) |
default (T) |
Obtenir valeur par défaut de type T |
delegate {} |
Fonction anonyme (méthode anonyme) |
Opérateurs unaires
Expression |
Description |
---|---|
+x |
Identité |
-x |
Négation |
!x |
Négation logique |
~x |
Négation de bits |
++x |
Pré-incrémentation |
--x |
Pré-décrémentation |
(T)x |
Convertir explicitement x en type T |
Opérateurs de multiplication
Expression |
Description |
---|---|
Multiplication |
|
Division |
|
Reste |
Opérateurs additifs
Expression |
Description |
---|---|
x + y |
Addition, concaténation de chaînes, combinaison de délégués |
x - y |
Soustraction, suppression de délégué |
Opérateurs de décalage
Expression |
Description |
---|---|
x << y |
Décalage vers la gauche |
x >> y |
Décalage vers la droite |
Opérateurs de type et relationnels
Expression |
Description |
---|---|
x < y |
Inférieur à |
x > y |
Supérieur à |
x <= y |
Inférieur ou égal |
x >= y |
Supérieur ou égal |
x is T |
Retourne la valeur true si x est de type T, faux dans les autres cas |
x as T |
Retourne x s'il a le type T ou null si x n'est pas de type T |
Opérateurs d'égalité
Expression |
Description |
---|---|
x == y |
Égal à |
x != y |
Différent de |
Opérateurs anonymes et d'assignation
Expression |
Description |
---|---|
Assignation |
|
x op= y |
L'assignation composée prend en charge ces opérateurs : +=, -=, *=, /=, %=, &=, |=, !=, <<=, >>= |
(T x) => y |
Fonction anonyme (expression lambda) |
Opérateurs logiques, conditionnels et Null
Catégorie |
Expression |
Description |
---|---|---|
AND logique |
x & y |
AND de bits entier, AND logique booléen |
XOR logique |
x ^ y |
XOR de bits entier, XOR logique booléen |
OR logique |
x | y |
OR de bits entier, OR booléen logique |
AND conditionnel |
x && y |
Évalue y uniquement si x est vrai |
OR conditionnel |
x || y |
Évalue y uniquement si x est faux |
Null de fusion |
X ?? y |
Évalue y si x est null, sinon évalue x |
Conditionnel |
x ?: y : z |
Évalue à y si x est vrai, z si x est faux |
Lorsque deux opérateurs de même niveau de priorité figurent dans une expression, ils sont évalués sur la base de l'associativité. Les opérateurs associatifs à gauche sont évalués dans l'ordre, de gauche à droite. Par exemple, x * y / z est évalué comme étant (x * y) / z. Les opérateurs associatifs à droite sont évalués dans l'ordre, de droite à gauche. Les opérateurs d'assignation et l'opérateur tertiaire (?:) sont associatifs à droite. Tous les autres opérateurs binaires sont associatifs à gauche.
Des parenthèses peuvent être utilisées pour isoler une expression et forcer l'évaluation de cette expression avant les autres. Par exemple, 2 + 3 * 2 donne normalement 8, car les opérateurs de multiplication ont priorité sur les opérateurs d'addition. Écrire l'expression sous la forme (2 + 3) * 2 donne le résultat 10, car cela indique au compilateur C# qu'il doit évaluer l'opérateur d'addition (+) avant l'opérateur de multiplication (*).
Vous pouvez modifier le comportement des opérateurs pour les classes et les structs personnalisés. Ce processus est connu sous le nom de surcharge d'opérateur. Pour plus d'informations, consultez Opérateurs surchargeables (Guide de programmation C#).
Rubriques connexes
Pour plus d'informations, consultez Mots clés des opérateurs (Référence C#) et Opérateurs C#.
Voir aussi
Concepts
Référence
Instructions, expressions et opérateurs (Guide de programmation C#)
Historique des modifications
Date |
Historique |
Raison |
---|---|---|
Juillet 2008 |
Suppression de l'instruction erronée à propos de la sortie indéfinie. |
Améliorations apportées aux informations. |