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, como neste exemplo:
ulong uLong = 9223372036854775808;
Quando um literal inteiro não possuir sufixo, seu tipo é o primeiro desses tipos que seu valor pode ser representado: int, uint, long, ulong. No exemplo acima, é 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.
Observação Você pode usar a letra minúscula "l" como um sufixo. No entanto, isso gera um aviso do compilador porque a letra "l" é facilmente confundido com o dígito "1". Use o "L" para maior clareza.
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. Por exemplo, considere 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 para qualquer tipo integral. Por exemplo, a instrução a seguir produzirá 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 integral, consulte float e double.
Para obter mais informações sobre regras de conversão numérica implícita, consulte o Implicit Numeric Conversions Table (C# Reference).
Especificação da linguagem C#
Para obter mais informações, consulte C# Language Specification A especificação de linguagem é a fonte definitiva para a sintaxe e o uso de C#.
Consulte também
Referência
Integral Types Table (C# Reference)
Built-In Types Table (C# Reference)
Implicit Numeric Conversions Table (C# Reference)
Explicit Numeric Conversions Table (C# Reference)