short (Référence C#)
Mise à jour : novembre 2007
Le mot clé short désigne un type intégral ; il est utilisé pour stocker des valeurs comme indiqué dans le tableau suivant.
Type |
Portée |
Taille |
Type .NET Framework |
---|---|---|---|
short |
-32 768 à 32 767 |
Entier 16 bits signé |
Littéraux
Vous pouvez déclarer et initialiser une variable short en suivant l'exemple ci-après :
short x = 32767;
Dans la déclaration précédente, le littéral entier 32767 est implicitement converti de type int en type short. Si le littéral entier a une taille de stockage supérieure à la taille maximale définie par short, une erreur de compilation se produit.
Une conversion doit être utilisée lors de l'appel de méthodes surchargées. Prenez l'exemple suivant de deux méthodes surchargées ayant pour paramètres short et int :
public static void SampleMethod(int i) {}
public static void SampleMethod(short s) {}
Le recours à un cast short permet de garantir que le type correct sera appelé, comme indiqué ci-après :
SampleMethod(5); // Calling the method with the int parameter
SampleMethod((short)5); // Calling the method with the short parameter
Conversions
Il y a une conversion implicite prédéfinie de short en int, long, float, double ou decimal.
Il n'est pas possible de convertir implicitement en short des types numériques non littéraux d'une taille de stockage supérieure (consultez Tableau des types intégraux (Référence C#) pour plus d'informations sur les tailles de stockage des types intégraux). Prenez l'exemple suivant de deux variables short, x et y :
short x = 5, y = 12;
L'instruction d'assignation suivante entraîne une erreur de compilation, car l'expression arithmétique située à droite de l'opérateur d'assignation a pour résultat intpar défaut.
short z = x + y; // Error: no conversion from int to short
Pour résoudre ce problème, utilisez une conversion explicite :
short z = (short)(x + y); // OK: explicit conversion
Il est cependant possible d'utiliser les instructions suivantes dans lesquelles la variable de destination possède une taille de stockage égale ou supérieure :
int m = x + y;
long n = x + y;
En outre, il n'y a pas de conversion implicite des types virgule flottante en type short. Par exemple, l'instruction suivante génère une erreur de compilation si aucune conversion explicite n'est spécifiée :
short x = 3.0; // Error: no implicit conversion from double
short y = (short)3.0; // OK: explicit conversion
Pour plus d'informations sur les expressions arithmétiques dans lesquelles coexistent des types virgule flottante et des types intégraux, consultez float et double.
Pour plus d'informations sur les règles de conversion numérique implicite, consultez Tableau des conversions numériques implicites (Référence C#).
Spécification du langage C#
Pour plus d'informations, consultez les sections suivantes dans Spécifications du langage C#.
1.3 Types et variables
4.1.5 Types intégraux
Voir aussi
Concepts
Référence
Tableau des types intégraux (Référence C#)
Tableau des types intégrés (Référence C#)
Tableau des conversions numériques implicites (Référence C#)
Tableau des conversions numériques explicites (Référence C#)