Programmation C sharp/Les opérateurs
Les opérateurs sont utilisés dans les expressions :
Les opérateurs arithmétiques.
Parmi les opérateurs arithmétiques, il y a les quatre opérateurs de base classiques :
Cependant, la division sur deux nombres entiers produit un nombre entier. Le reste de cette division est donné par l'opérateur modulo : codice_8 (1, car 13 = 3*4 + 1)
La division donnera un nombre à virgule flottante si au moins l'un des deux opérandes est de ce type : codice_9 donnera codice_10.
Les opérateurs de comparaison.
Chaque opérateur de comparaison retourne un booléen (codice_11 ou codice_12) déterminant si la condition est vraie ou fausse :
Les opérateurs booléens.
Les expressions booléennes (telles les comparaisons) sont des conditions qui peuvent être combinées avec les opérateurs suivants :
Les opérateurs de manipulation des bits.
Les exemples montrent la représentation binaire des opérandes de type octet (codice_23), donc sur 8 bits.
Les opérateurs suivants manipulent les bits :
 ~ 1001 0011 (0x93)
 = 0110 1100 (0x6C)
 1001 0011 (0x93)
 & 0011 0110 (0x36)
 = 0001 0010 (0x12)
 1001 0011 (0x93)
 | 0011 0110 (0x36)
 = 1011 0111 (0xB7)
 10010011 (0x93)
 010011 «2
 = 01001100 (0x4C)
 10010011 (0x93)
 100100 »2
 = 00100100 (0x24)
Le test de type.
Tester le type d'un objet permet de savoir si son type est d'une classe particulière ou une de ses sous-classes. Il permet également de savoir si sa classe implémente une interface particulière.
L'opérateur codice_29.
Cet opérateur permet de tester le type d'un objet. Le premier argument est l'objet à tester, le second doit être un codice_30. L'opérateur retourne une valeur de type codice_31 : codice_11 si l'objet passé est du type spécifié, codice_12 sinon.
Syntaxe :
 "expression" is "type"
Exemple :
Nombre nombre = new Entier(150);
if (nombre is Entier)
 Console.WriteLine("nombre entier");
Cet opérateur équivaut à comparer le type retourné par la méthode codice_34 avec le type spécifié, tout en gérant le cas où la référence d'objet est nulle (codice_35).
Les opérateurs de conversion.
La conversion permet de modifier le type d'une expression ou d'une référence en un autre type (par exemple, convertir l'entier 5 en nombre à virgule flottante). Le langage C# dispose de deux opérateurs différents :
Les parenthèses.
Les parenthèses permettent de convertir tout type en un autre. La conversion d'objet d'une classe en une autre n'est possible que si le type réel de l'expression convertie est une sous-classe du type spécifié, ou implémente l'interface spécifiée. Dans le cas contraire, l'opérateur lance une exception. La syntaxe est la suivante :
 ("nouveau_type")"expression"
Exemple :
int longueur = (int)( 10.2 * 3.1415 );
L'opérateur codice_36.
Contrairement à l'opérateur précédent, l'opérateur codice_36 ne fonctionne que sur les références d'objets. Si la conversion ne peut être effectuée (la nouvelle classe n'est pas une classe de base de la classe réelle, ou n'est pas une interface implémentée par la classe réelle), alors la valeur codice_35 est retournée (aucune exception lancée). La syntaxe est la suivante :
 "expression" as "nouveau_type"
Exemple :
object o = "Chaîne de caractère dérive de la classe object" as object;
Les opérateurs d'affectation.
L'affectation consiste à assigner une valeur (constante ou résultat d'une expression) à une variable.
L'affectation simple.
L'opérateur codice_39 affecte le résultat de l'expression de droite à la variable située à gauche.
Exemples :
total = 0;
total = 1 + 2;
total = longueur + largeur;
this.article1.nom = "Livre";
N.B.: Cet opérateur est le seul opérateur d'affectation utilisable à la déclaration des variables :
codice_40
Exemples :
int total = 0;
double prix_total_ttc = 1.196 * prix_total_ht;
string nom_article = "Livre";
object livre = new Livre("Sans titre");
L'affectation avec opération.
Un tel opérateur effectue une opération utilisant la valeur actuelle d'une variable et affecte le résultat à cette même variable.
La syntaxe est la suivante :
Cette syntaxe est l'équivalent de la suivante :
Ces opérateurs d'affectation sont les suivants :
N.B.: Un tel opérateur d'affectation ne peut être utilisé à la déclaration d'une variable car celle-ci n'existe pas encore lors de l'évaluation de l'expression.
La liste complète des opérateurs du C#.
La liste ci-dessous présente les différents opérateurs du language C# avec leur associativité dans l'ordre de leur priorité (du premier évalué au dernier). Les opérateurs situés dans le même bloc ont la même priorité.
Code de couleur :
Erreurs dans les expressions.
Différents types d'erreur peuvent survenir dans une expression :
Si l'expression où se situe l'erreur est constante (pas de variable dans l'expression), le résultat est évalué à la compilation, et produit en cas d'erreur une erreur de compilation.
Si au contraire, l'expression n'est pas constante, une erreur provoque le lancement d'une exception.
Ce comportement peut être modifié pour le débordement par les mots-clés codice_44 et codice_45.
Vérification du débordement.
Le débordement provoque une exception codice_46.
 checked( "expression" )
Il s'agit du contexte par défaut pour les expressions constantes, c'est à dire celles qui peuvent être évaluées lors de la compilation.
Non vérification du débordement.
Le débordement provoque une copie partielle (les bits de poids faibles) du résultat de l'expression.
 unchecked( "expression" )
Il s'agit du contexte par défaut pour les expressions non constantes, c'est à dire celles qui ne peuvent être évaluées que lors de l'exécution.

Programmation C sharp/Surcharge des opérateurs