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 suivant.

Type Portée Taille Type .NET Framework

long

-9 223 372 036 854 775 808 à 9 223 372 036 854 775 807

Entier 64 bits signé

System.Int64

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 les sections suivantes dans Spécifications du langage C#.

  • 1.3 Types et variables

  • 4.1.5 Types intégraux

Voir aussi

Référence

Mots clés C#
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#)
Int64 Structure

Concepts

Guide de programmation C#

Autres ressources

Référence C#