long (référence C#)
Le mot clé long désigne un type intégral ; il est utilisé pour stocker des valeurs comme indiqué dans le tableau ci-dessous.
Type |
Plage |
Taille |
Type .NET Framework |
---|---|---|---|
long |
–9,223,372,036,854,775,808 à 9,223,372,036,854,775,807 |
Entier 64 bits signé |
Littéraux
Vous pouvez déclarer et initialiser une variable long en suivant l'exemple ci-après :
long long1 = 4294967296;
Lorsqu'un littéral entier n'a aucun suffixe, son type est le premier des types dans lesquels sa valeur peut être représentée : int, uint, long, ulong. Dans l'exemple précédent, il est de type long, car il dépasse la plage de uint (consultez Tableau des types intégraux (référence C#) pour les tailles de stockage de types intégraux).
Vous pouvez aussi utiliser le suffixe L avec le type long, comme suit :
long long2 = 4294967296L;
Lorsque vous utilisez le suffixe L, le type du littéral entier est défini comme étant long ou ulong selon sa taille. Dans cet exemple, il est de type long puisque sa taille est inférieure à la plage définie pour ulong.
Ce suffixe est souvent utilisé lors de l'appel de méthodes surchargées. Prenez l'exemple suivant de deux méthodes surchargées ayant pour paramètres long et int :
public static void SampleMethod(int i) {}
public static void SampleMethod(long l) {}
Le recours au suffixe L permet de garantir que le type correct sera appelé, comme indiqué ci-après :
SampleMethod(5); // Calling the method with the int parameter
SampleMethod(5L); // Calling the method with the long parameter
Vous pouvez combiner, au sein d'une expression, le type long et d'autres types numériques intégraux, auquel cas le résultat de l'évaluation de l'expression est de type long (ou de type bool s'il s'agit d'une expression relationnelle ou booléenne). Par exemple, le résultat de l'expression suivante est de type long :
898L + 88
Notes
Vous pouvez également utiliser la lettre minuscule "l" comme suffixe. Le cas échéant, le compilateur génère un avertissement pour signaler que la lettre "l" peut être confondue avec le chiffre "1". Pour cette raison, préférez le suffixe "L".
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.
Conversions
Une conversion implicite prédéfinie intervient de long en float, double ou decimal. Sinon, une conversion explicite doit être utilisée. Par exemple, l'instruction suivante génère une erreur de compilation si vous ne spécifiez pas de conversion explicite :
int x = 8L; // Error: no implicit conversion from long to int
int x = (int)8L; // OK: explicit conversion to int
Il y a une conversion implicite prédéfinie de sbyte, byte, short, ushort, int, uint ou char en long.
En outre, il n'y a pas de conversion implicite des types virgule flottante en type long. Par exemple, l'instruction suivante génère une erreur de compilation si aucune conversion explicite n'est spécifiée :
long x = 3.0; // Error: no implicit conversion from double
long y = (long)3.0; // OK: explicit conversion
Spécification du langage C#
Pour plus d'informations, consultez la Spécification du langage C#. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.
Voir aussi
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#)