Share via


ulong (Referência de C#)

O ulong palavra-chave denota um tipo integral que armazena valores de acordo com o tamanho e o intervalo, mostrado na tabela a seguir.

Tipo

Intervalo

Tamanho

Tipo .NET Framework

ulong

0 a 18,446,744,073,709,551,615

Inteiro de 64 bits sem-sinal

UInt64

Literais

Você pode declarar e inicializar um ulong variável semelhante ao exemplo:

ulong uLong = 9223372036854775808;

Quando um literal inteiro não tem nenhum sufixo, seu tipo é o primeiro desses tipos no qual o seu valor pode ser representado: int, uint, longo, ulong. No exemplo acima, ele é do tipo ulong.

Você também pode usar os sufixos para especificar o tipo literal de acordo com às seguintes regras:

  • Se você usar l ou l, o tipo do literal inteiro será um longo ou ulong de acordo com a seu tamanho.

    Dica

    Você pode usar a letra minúscula "l" como um sufixo.No entanto, isso gera um aviso do compilador porque a letra "l" é facilmente confundida com o dígito "1". Use o "L" para fins de esclarecimento.

  • Se você usar U ou u, o tipo do literal inteiro será um uint ou ulong de acordo com a seu tamanho.

  • Se você usar UL, ul, Ul, uL, LU, lu, Lu ou lU, o tipo do literal inteiro será ulong.

    Por exemplo, a saída das três instruções seguintes serão do tipo de sistema UInt64, que corresponde ao alias ulong:

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

Um uso comum do sufixo é chamando métodos sobrecarregados. Considere, por exemplo, o seguinte sobrecarregado métodos que usam ulong e int parâmetros:

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

Usando um sufixo com o ulong parâmetro garante que o tipo correto é chamado, por exemplo:

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

Conversões

Há uma conversão implícita predefinida de ulong para float, double, ou decimal.

Não há nenhuma conversão implícita de ulong a qualquer tipo integral. Por exemplo, a instrução a seguir gerará um erro de compilação sem uma conversão explícita:

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

Há uma conversão implícita predefinida de bytes, ushort, uint, ou char para ulong.

Além disso, não há nenhuma conversão implícita de tipos de ponto flutuante para ulong. Por exemplo, a instrução a seguir gera um erro do compilador, a menos que seja usada uma conversão explícita:

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

Para obter informações sobre expressões aritméticas com tipos mistos de ponto flutuante e tipos integrais, consulte float e double.

Para obter mais informações sobre regras de conversão numérica implícito, consulte o Tabela de conversões numéricas implícitas (Referência de C#).

Especificação da linguagem C#

Para obter mais informações, consulte a Especificação da linguagem C#. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso de C#.

Consulte também

Referência

Palavras-chave C#

Tabela de tipos integrais (Referência de C#)

Tabela de tipos internos (Referência de C#)

Tabela de conversões numéricas implícitas (Referência de C#)

Tabela de conversões numéricas explícitas (Referência de C#)

UInt64

Conceitos

Guia de Programação em C#

Outros recursos

Referência de C#