Share via


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

Int64

Literais

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

long long1 = 4294967296;

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, long, ulong. No exemplo anterior, ele é do tipo long porque ele excede o intervalo de uint (consulte Tabela de tipos integrais (Referência de C#) para os tamanhos de armazenamento dos tipos integrais).

Você também pode usar o sufixo l com o long tipo como este:

long long2 = 4294967296L;

Quando você usa o sufixo L, o tipo do inteiro literal é determinado para ser uma long ou ulong de acordo com a seu tamanho. No caso em que ele é long porque ele menor do que o intervalo de ulong.

Um uso comum do sufixo é chamando métodos sobrecarregados. Considere, por exemplo, 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 tipo com outros tipos numéricos de integrais na mesma expressão, nesse 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

Dica

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 confundida com o dígito "1". Use o "L" para fins de esclarecimento.

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

Conversões

Há uma conversão implícita predefinida de long para float, double, ou decimal. Caso contrário, a projeção de deve ser usada. Por exemplo, a instrução a seguir gerará 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 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#)

Int64

Conceitos

Guia de Programação em C#

Outros recursos

Referência de C#