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