Partager via


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 seul opérateur unaire et un seul 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 de type entier y et l'expression 2 + 3 comme opérandes. L'expression 2 + 3 elle-même se compose de l'opérateur Addition et de deux opérandes, 2 et 3.

y = 2 + 3;

Opérateurs, évaluation et priorité des opérateurs

Un opérande peut être une expression valide qui est composée d'une longueur quelconque de code, et qui peut comporter plusieurs sous-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 répartit les opérateurs en catégories selon 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 la 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 d'opération de bits

++x

Pré-incrémentation

--x

Pré-décrémentation

(T)x

Convertir explicitement x en type T

Opérateurs multiplicatifs

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 à gauche

x >> y

Décalage à 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, false 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érence

Opérateurs logiques, conditionnels et Null

Catégorie

Expression

Description

AND logique

x & y

Opération de bits entière AND, Boolean logique AND

XOR logique

x ^ y

Opération de bits entière XOR, Boolean logique XOR

OR logique

x | y

Opération de bits entière OR, Boolean logique OR

AND conditionnel

x && y

Évalue y uniquement si x est vrai

OR conditionnel

x || y

Évalue y uniquement si x est false

Fusion de Null

x ?? y

Prend la valeur y si x est null, sinon prend la valeur x

Conditionnel

x ?: y : z

Prend la valeur de y si x est vrai, de z si x est false

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 sur leur 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 sur leur droite sont évalués dans l'ordre, de droite à gauche. Par exemple, l'opérateur d'assignation est associatif sur sa droite. Dans le cas contraire, 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;

Autre exemple, l'opérateur ternaire (?:) est associatif sur sa droite. La plupart des opérateurs binaires sont associatifs sur leur gauche.

Si les opérateurs présents dans une expression sont associatifs sur leur gauche ou associatifs sur leur droite, les opérandes de chaque expression sont évalués 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#)

Concepts

Guide de programmation C#