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

Guide de programmation C#

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.