Long (referência de C#)
O long 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 |
---|---|---|---|
long |
–9, 223, 372, 036, 854, 775, 808 para 9.223.372.036.854.775.807 |
Inteiro assinado de 64 bits |
Literais
Você pode declarar e inicializar um long variável, como neste exemplo:
long long1 = 4294967296;
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 anterior, ele é do tipo long porque ele excede o intervalo de uint (consulte Integral Types Table (C# Reference) para os tamanhos de armazenamento dos tipos integrais).
Você também pode usar o sufixo l com o long o tipo como este:
long long2 = 4294967296L;
Quando você usa o sufixo L, o tipo do inteiro literal é determinado para ser long ou ulong de acordo com a seu tamanho. No caso em que ele é long porque ele menor que o intervalo de ulong.
Um uso comum do sufixo é chamando métodos sobrecarregados. Por exemplo, considere o seguinte sobrecarregado métodos que usam long e int parâmetros:
public static void SampleMethod(int i) {}
public static void SampleMethod(long l) {}
Usar o sufixo l garante que o tipo correto é chamado, por exemplo:
SampleMethod(5); // Calling the method with the int parameter
SampleMethod(5L); // Calling the method with the long parameter
Você pode usar o long o tipo com outros tipos de integrais numéricos na mesma expressão, em que, caso a expressão é avaliado como long (ou bool no caso de expressões booleanas ou relacionais). Por exemplo, a seguinte expressão for avaliada como long:
898L + 88
Observação |
---|
Você também 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. |
Para obter informações sobre expressões aritméticas com tipos mistos de ponto flutuante e integral, consulte float e double.
Conversões
Há uma conversão implícita predefinida de long para float, double, ou decimal. Caso contrário, uma conversão deve ser usada. Por exemplo, a instrução a seguir produzirá um erro de compilação sem uma conversão explícita:
int x = 8L; // Error: no implicit conversion from long to int
int x = (int)8L; // OK: explicit conversion to int
Há uma conversão implícita predefinida de sbyte, bytes, curto, ushort, int, uint, ou char para long.
Observe também que não há nenhuma conversão implícita de tipos de ponto flutuante para long. Por exemplo, a instrução a seguir gera um erro do compilador, a menos que seja usada uma conversão explícita:
long x = 3.0; // Error: no implicit conversion from double
long y = (long)3.0; // OK: explicit conversion
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)