ulong (Referencia de C#)

Actualización: noviembre 2007

La palabra clave ulong 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

ulong

0 a 18.446.744.073.709.551.615

Entero de 64 bits sin signo

System.UInt64

Literales

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

ulong uLong = 9223372036854775808;

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 ulong.

También se pueden utilizar sufijos para especificar el tipo del literal, de acuerdo con las siguientes reglas:

  • Cuando se utiliza el sufijo L o l, el tipo del entero literal será long o ulong, según su tamaño.

    Nota:

    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.

  • Cuando se utiliza el sufijo U o u, el tipo del entero literal será uint o ulong, según su tamaño.

  • Si se utiliza UL, ul, Ul, uL, LU, lu, Lu o lU, el tipo del entero literal será ulong.

    Por ejemplo, el resultado de las tres instrucciones siguientes será el tipo UInt64, que corresponde al alias ulong:

    Console.WriteLine(9223372036854775808L.GetType());
    Console.WriteLine(123UL.GetType());
    Console.WriteLine((123UL + 456).GetType());
    

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 ulong e int:

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

Si se utiliza un sufijo con el parámetro ulong, se garantiza la llamada al tipo correcto; por ejemplo:

SampleMethod(5);    // Calling the method with the int parameter
SampleMethod(5UL);  // Calling the method with the ulong parameter

Conversiones

Existe una conversión implícita predefinida de ulong a float, double o decimal.

Sin embargo, no existe conversión implícita de ulong a cualquier tipo integral. Por ejemplo, la instrucción siguiente genera un error de compilación si no se emplea una conversión explícita:

long long1 = 8UL;   // Error: no implicit conversion from ulong

Existe una conversión implícita predefinida de byte, ushort, uint o char a ulong.

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

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

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

Para obtener más información sobre reglas de conversión numéricas implícitas, vea Tabla de conversiones numéricas implícitas (Referencia de C#).

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#)

UInt64

Otros recursos

Referencia de C#