ulong (Référence C#)

Le mot clé ulong 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

ulong

0 à 18 446 744 073 709 551 615

Entier 64 bits non signé

System.UInt64

Littéraux

Vous pouvez déclarer et initialiser une variable ulong en suivant l'exemple ci-après :

        ulong uLong = 9223372036854775808;

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 ci-dessous, le littéral entier est de type ulong.

Vous pouvez également employer des suffixes pour spécifier le type du littéral, en tenant compte des règles suivantes :

  • Si vous utilisez le suffixe L ou l, le littéral entier est de type long ou ulong selon sa taille.

    Notes

    Vous pouvez 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".

  • Si vous utilisez U ou u, le type d'entier littéral est uint ou ulong selon sa taille.

  • Si vous utilisez le suffixe UL, ul, Ul, uL, LU, lu, Lu ou lU, le littéral entier est de type ulong.

    Par exemple, le résultat des trois instructions suivantes sera de type système UInt64, ce qui correspond à l'alias ulong :

    Console.WriteLine(9223372036854775808L.GetType());
    Console.WriteLine(123UL.GetType());
    Console.WriteLine((123UL + 456).GetType());
    

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 ulong et int :

public static void SampleMethod(int i) {}
public static void SampleMethod(ulong l) {}

Le recours au suffixe UL avec le paramètre ulong permet de garantir que le type correct sera appelé, comme indiqué ci-après :

SampleMethod(5);    // Calling the method with the int parameter
SampleMethod(5UL);  // Calling the method with the ulong parameter

Conversions

Une conversion implicite prédéfinie intervient de ulong en float, double ou decimal.

Il n'y a pas de conversion implicite du type ulong en un type intégral. Par exemple, l'instruction suivante génère une erreur de compilation si vous ne spécifiez pas de conversion explicite :

long long1 = 8UL;   // Error: no implicit conversion from ulong

Une conversion implicite prédéfinie est effectuée entre le type byte, ushort, uint ou char en ulong.

En outre, il n'y a pas de conversion implicite des types virgule flottante en type ulong. Par exemple, l'instruction suivante génère une erreur de compilation si aucune conversion explicite n'est spécifiée :

// Error -- no implicit conversion from double:
ulong x = 3.0;
// OK -- explicit conversion:
ulong y = (ulong)3.0;  

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

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#)
UInt64 Structure

Concepts

Guide de programmation C#

Autres ressources

Référence C#