Opérateurs (guide de programmation C#)
En C#, un opérateur est un élément de programme qui s'applique à un ou plusieurs opérandes dans une expression ou une instruction.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 ternaire 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 la variable d'entier y et l'expression 2 + 3 comme opérandes.L'expression 2 + 3 elle-même se compose de l'opérateur d'addition et de deux opérandes, 2 et 3.
y = 2 + 3;
Opérateurs, évaluation et priorité d'opérateur
Un opérande peut être une expression valide de n'importe quelle taille et peut être composé de n'importe quel nombre d'autres expressions.Dans une expression qui contient plusieurs opérateurs, l'ordre dans lequel les opérateurs sont appliqués est déterminé par la priorité des opérateurs, l'associativité et les parenthèses.
Chaque opérateur a une priorité définie.Dans une expression qui contient plusieurs opérateurs ayant différents niveaux de priorité, la priorité des opérateurs détermine l'ordre dans lequel les opérateurs sont évalués.Par exemple, l'instruction suivante assigne la valeur 3 à n1.
n1 = 11 - 2 * 4;
La multiplication est effectuée en premier lieu parce que la multiplication est prioritaire sur la soustraction.
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 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 coalescing |
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 |
Opérateurs anonymes et d'assignation
Expression |
Description |
---|---|
Assignation |
|
x op= y |
Assignation composée.Prend en charge ces opérateurs : +=, -=, *=, /=, %=, &=, |=, !=, <<=, >>= |
(T x) => y |
Fonction anonyme (expression lambda) |
Associativité
Lorsque deux opérateurs ou plus, 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.Par exemple, l'opérateur d'assignation est associatif à droite.Si non, le code suivant génère une erreur.
int a, b, c;
c = 1;
// The following two lines are equivalent.
a = b = c;
a = (b = c);
// The following line, which forces left associativity, causes an error.
//(a = b) = c;
Les opérateurs d'assignation et l'opérateur ternaire (?:) sont associatifs à droite.Tous les autres opérateurs binaires sont associatifs à gauche.
Si les opérateurs présents dans une expression sont associatifs à gauche ou associatifs à droite, les opérandes de chaque expression sont évaluées en premier, de gauche à droite.Les exemples suivants illustrent l'ordre d'évaluation des opérateurs et des opérandes.
Instruction |
Ordre d'évaluation |
---|---|
a = b |
a, b, = |
a = b + c |
a, b, c, +, = |
a = b + c * d |
a, b, c, d, *, +, = |
a = b * c + d |
a, b, c, *, d, +, = |
a = b - c + d |
a, b, c, -, d, +, = |
a += b -= c |
a, b, c, -=, += |
Ajout de parenthèses
Vous pouvez modifier l'ordre imposé par la priorité d'opérateur et l'associativité en utilisant des parenthèses.Par exemple, 2 + 3 * 2 correspond généralement à 8, car les opérateurs de multiplication ont la priorité sur les opérateurs additifs.Toutefois, si vous entrez une expression comme (2 + 3) * 2, l'addition est évaluée avant la multiplication, et le résultat est 10.Les exemples suivants illustrent l'ordre d'évaluation dans les expressions entre parenthèses.Comme dans les exemples précédents, l'évaluation des opérandes a lieu avant l'application de l'opérateur.
Instruction |
Ordre d'évaluation |
---|---|
a = (b + c) * d |
a, b, c, +, d, *, = |
a = b - (c + d) |
a, b, c, d, +, -, = |
a = (b + c) * (d - e) |
a, b, c, +, d, e, -, *, = |
Surcharge d'opérateur
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
Référence
Instructions, expressions et opérateurs (guide de programmation C#)