long (Referencia de C#)
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 |
Size |
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 |
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 enteros (Referencia 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 la Especificación del lenguaje C#. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.
Vea también
Referencia
Tabla de tipos enteros (Referencia 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#)