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

System.Int64

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çãoObservaçã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

C# Keywords

Integral Types Table (C# Reference)

Built-In Types Table (C# Reference)

Implicit Numeric Conversions Table (C# Reference)

Explicit Numeric Conversions Table (C# Reference)

Int64

Conceitos

C# Programming Guide

Outros recursos

C# Reference