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#)

Concepts

Guide de programmation C#