long (Referencia de C#)

Actualización: noviembre 2007

La palabra clave long denota un tipo integral que almacena valores según el tamaño y el intervalo que se indican en la tabla siguiente.

Tipo

Intervalo

Tamaño

Tipo de .NET Framework

long

–9,223,372,036,854,775,808 a 9,223,372,036,854,775,807

Entero de 64 bits con signo

System.Int64

Literales

Las variables de tipo long se pueden declarar e inicializar como en el siguiente ejemplo:

long long1 = 4294967296;

Cuando un literal entero no tiene sufijo, su tipo es el primero de estos tipos en el que se puede representar su valor: int, uint, long, ulong. En el ejemplo anterior, es del tipo long, ya que supera el intervalo de uint (vea Tabla de tipos integrales (Guía de programación de C#) para conocer los tamaños de almacenamiento de los tipos integrales).

También se puede utilizar el sufijo L con el tipo long de este modo:

long long2 = 4294967296L;

Cuando se utiliza el sufijo L, el tipo del entero literal será long o ulong, según su tamaño. En este caso, es long, ya que es menor que el intervalo de ulong.

El sufijo se utiliza habitualmente en las llamadas a métodos sobrecargados. Considere, por ejemplo, los dos métodos sobrecargados siguientes que utilizan parámetros de tipo long e int:

public static void SampleMethod(int i) {}
public static void SampleMethod(long l) {}

Si se utiliza el sufijo L, se garantiza la llamada al tipo correcto; por ejemplo:

SampleMethod(5);    // Calling the method with the int parameter
SampleMethod(5L);   // Calling the method with the long parameter

El tipo long se puede utilizar con otros tipos integrales numéricos en la misma expresión, en cuyo caso la expresión se evalúa como long (o bool en el caso de expresiones relacionales o booleanas). Por ejemplo, la siguiente expresión se evalúa como long:

898L + 88
Nota:

También se puede utilizar la letra minúscula "l" como sufijo. No obstante, el compilador generará una advertencia, ya que la letra "l" se confunde fácilmente con el dígito "1". Utilice "L" por motivos de claridad.

Para obtener más información sobre expresiones aritméticas con tipos de punto flotante y tipos integrales, vea float y double.

Conversiones

Existe una conversión implícita predefinida de long a float, double o decimal. En los demás casos, se debe utilizar una conversión explícita. Por ejemplo, la instrucción siguiente genera un error de compilación si no se emplea una conversión explícita:

int x = 8L;        // Error: no implicit conversion from long to int
int x = (int)8L;   // OK: explicit conversion to int

Existe una conversión implícita predefinida de sbyte, byte, short, ushort, int, uint o char a long.

Observe que no existe conversión implícita de tipos de punto flotante a long. Por ejemplo, la instrucción siguiente generará un error de compilación, a menos que se utilice una conversión explícita:

long x = 3.0;         // Error: no implicit conversion from double
long y = (long)3.0;   // OK: explicit conversion

Especificación del lenguaje C#

Para obtener más información, vea las secciones siguientes de Especificación del lenguaje C#.

  • 1.3 Tipos y variables

  • 4.1.5 Tipos integrales

Vea también

Conceptos

Guía de programación de C#

Referencia

Palabras clave de C#

Tabla de tipos integrales (Guía de programación de C#)

Tabla de tipos integrados (Referencia de C#)

Tabla de conversiones numéricas implícitas (Referencia de C#)

Tabla de conversiones numéricas explícitas (Referencia de C#)

Int64

Otros recursos

Referencia de C#