Opérateur C# (Référence C#)C# operators (C# reference)

C# fournit plusieurs opérateurs pris en charge par les types intégrés.C# provides a number of operators supported by the built-in types. Par exemple, les opérateurs arithmétiques effectuent des opérations arithmétiques avec des opérandes numériques et les opérateurs logiques booléens effectuent des opérations logiques avec les opérandes bool.For example, arithmetic operators perform arithmetic operations with numeric operands and Boolean logical operators perform logical operations with the bool operands. Certains opérateurs peuvent être surchargés.Certain operators can be overloaded. Avec la surcharge d’opérateur, vous pouvez spécifier le comportement de l’opérateur pour les opérandes d’un type défini par l’utilisateur.With operator overloading, you can specify the operator behavior for the operands of a user-defined type.

Dans une expression, la priorité et l’associativité des opérateurs déterminent l’ordre dans lequel les opérations sont exécutées.In an expression, operator precedence and associativity determine the order in which the operations are performed. Vous pouvez utiliser des parenthèses pour changer l’ordre d’évaluation imposé par la priorité et l’associativité de l’opérateur.You can use parentheses to change the order of evaluation imposed by operator precedence and associativity.

Priorité des opérateursOperator precedence

Dans une expression avec plusieurs opérateurs, les opérateurs avec une priorité plus élevée sont évalués avant les opérateurs avec une priorité moins élevée.In an expression with multiple operators, the operators with higher precedence are evaluated before the operators with lower precedence. Dans l’exemple suivant, la multiplication est effectuée en premier, car elle a une priorité plus élevée que l’addition :In the following example, the multiplication is performed first because it has higher precedence than addition:

var a = 2 + 2 * 2;
Console.WriteLine(a); //  output: 6

Utilisez des parenthèses pour changer l’ordre d’évaluation imposé par la précédence des opérateurs :Use parentheses to change the order of evaluation imposed by operator precedence:

var a = (2 + 2) * 2;
Console.WriteLine(a); //  output: 8

La table suivante répertorie les opérateurs C# de la priorité la plus élevée à la plus basse.The following table lists the C# operators starting with the highest precedence to the lowest. Les opérateurs dans chaque ligne sont de priorité égale.The operators within each row have the same precedence.

OpérateursOperators Catégorie ou nomCategory or name
x.y, x?.y, x?[y], f(x), a[i], x++, x--, nouveau, typeof, vérifié, non vérifié, par défaut, nameof, délégué, sizeof, stackalloc, x->yx.y, x?.y, x?[y], f(x), a[i], x++, x--, new, typeof, checked, unchecked, default, nameof, delegate, sizeof, stackalloc, x->y PrincipalePrimary
+ x, - !x, x, ~ x, + + x, --x, ^ x, (T) x, await, & x, * x, true et false+x, -x, !x, ~x, ++x, --x, ^x, (T)x, await, &x, *x, true and false UnaireUnary
x.. yx..y PlageRange
x * y, x / y, x % yx * y, x / y, x % y MultiplicationMultiplicative
x + y, x – yx + y, x – y AdditionAdditive
x << y, x >> yx << y, x >> y ShiftShift
x < y, x > y, x <= y, x >= y, is, asx < y, x > y, x <= y, x >= y, is, as Relations et test de typeRelational and type-testing
x == y, x != yx == y, x != y ÉgalitéEquality
x & y Logique booléen AND ou logique bitwise ANDBoolean logical AND or bitwise logical AND
x ^ y Logique booléen XOR ou logique bitwise XORBoolean logical XOR or bitwise logical XOR
x | y Logique booléen OR ou logique bitwise ORBoolean logical OR or bitwise logical OR
x && yx && y AND conditionnelConditional AND
x || yx || y OR conditionnelConditional OR
x ?? yx ?? y Opérateur de fusion de NullNull-coalescing operator
c ? t : fc ? t : f Opérateur conditionnelConditional operator
x = y, x + = y, x-= y, x * = y, x/= y, x % = y, x & = y, x |= y, x ^ = y, x < < = y, x > > = y, x ?? = y,=>x = y, x += y, x -= y, x *= y, x /= y, x %= y, x &= y, x |= y, x ^= y, x <<= y, x >>= y, x ??= y, => Affectation et déclaration lambdaAssignment and lambda declaration

Associativité des opérateursOperator associativity

Quand les opérateurs sont de même priorité, l’associativité des opérateurs détermine l’ordre dans lequel les opérations sont effectuées :When operators have the same precedence, associativity of the operators determines the order in which the operations are performed:

  • Les opérateurs associatifs sur leur gauche sont évalués dans l’ordre, de gauche à droite.Left-associative operators are evaluated in order from left to right. À l’exception des opérateurs d’assignation et de l’opérateur de fusion null??, tous les opérateurs binaires sont associatifs sur leur gauche.Except for the assignment operators and the null-coalescing operator ??, all binary operators are left-associative. Par exemple, a + b - c est évalué comme étant (a + b) - c.For example, a + b - c is evaluated as (a + b) - c.
  • Les opérateurs associatifs sur leur droite sont évalués dans l’ordre, de droite à gauche.Right-associative operators are evaluated in order from right to left. Les opérateurs d’assignation, l’opérateur de fusion null ?? et l’opérateur conditionnel?: sont associatifs sur leur droite.The assignment operators, the null-coalescing operator ??, and the conditional operator ?: are right-associative. Par exemple, x = y = z est évalué comme étant x = (y = z).For example, x = y = z is evaluated as x = (y = z).

Utilisez des parenthèses pour changer l’ordre d’évaluation imposé par l’associativité des opérateurs :Use parentheses to change the order of evaluation imposed by operator associativity:

int a = 13 / 5 / 2;
int b = 13 / (5 / 2);
Console.WriteLine($"a = {a}, b = {b}");  // output: a = 1, b = 6

Évaluation des opérandesOperand evaluation

Sans rapport avec la priorité et l’associativité des opérateurs, les opérandes dans une expression sont évalués de gauche à droite.Unrelated to operator precedence and associativity, operands in an expression are evaluated from left to right. Les exemples suivants illustrent l’ordre dans lequel les opérateurs et les opérandes sont évalués :The following examples demonstrate the order in which operators and operands are evaluated:

ExpressionExpression Ordre d'évaluationOrder of evaluation
a + b a, b, +a, b, +
a + b * c 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, *

En règle générale, tous les opérandes d’opérateur sont évalués.Typically, all operator operands are evaluated. Certains opérateurs évaluent les opérandes de manière conditionnelle.Some operators evaluate operands conditionally. Autrement dit, la valeur du premier opérande d’un opérateur définit si d’autres (ou quels autres) opérandes doivent être évalués.That is, the value of the first operand of such an operator defines if (or which) other operands should be evaluated. Ces opérateurs sont les opérateurs conditionnels logiques AND (&&) et OR (||), l’opérateur de fusion null??, les opérateurs conditionnels nuls ?. et ?[], et l’opérateur conditionnel ?:.These operators are the conditional logical AND (&&) and OR (||) operators, the null-coalescing operator ??, the null-conditional operators ?. and ?[], and the conditional operator ?:. Reportez-vous à la description de chaque opérateur pour plus de détails.See the description of each operator for more details.

spécification du langage C#C# language specification

Pour plus d’informations, consultez la section Opérateurs de la spécification du langage C#.For more information, see the Operators section of the C# language specification.

Voir aussiSee also