unchecked (Referencia de C#)

Actualización: noviembre 2007

La palabra clave unchecked se utiliza con el fin de suprimir la comprobación de desbordamiento para operaciones aritméticas y conversiones de tipo integral.

En un contexto no comprobado (unchecked), si una expresión produce un valor fuera del intervalo del tipo de destino, el resultado se trunca. Por ejemplo:

unchecked
{
    int val = 2147483647 * 2;
}

Como el cálculo anterior se realiza en un bloque unchecked, se pasa por alto que el resultado es demasiado grande para un valor entero y se asigna a val el valor -2. De forma predeterminada, se habilita la detección del desbordamiento, que tiene el mismo efecto que utilizar checked.

En el ejemplo anterior, si se hubiera omitido unchecked, ocurriría un error de compilación porque la expresión utiliza constantes y el resultado se conoce en tiempo de compilación. La palabra clave unchecked también suprime la detección del desbordamiento para expresiones no constantes, que de lo contrario producen una excepción OverflowException en tiempo de ejecución.

La palabra clave unchecked también se puede utilizar como operador, de la manera siguiente:

public int UncheckedAdd(int a, int b)
{
    return unchecked(a + b);
}

Ejemplo

Este ejemplo muestra cómo utilizar la instrucción unchecked con expresiones constantes.

class TestClass 
{
    const int x = 2147483647;   // Max int 
    const int y = 2;

    static void Main() 
    {
        int z;
        unchecked 
        {
            z = x * y;
        }
        Console.WriteLine("Unchecked output value: {0}", z);
    }
}
// Output: Unchecked output value: -2

Especificación del lenguaje C#

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

  • 5.3.3.2 Instrucciones de bloques e instrucciones checked y unchecked

  • 7.5.12 Los operadores checked y unchecked

  • 8.11 Las instrucciones checked y unchecked

Vea también

Conceptos

Guía de programación de C#

Referencia

Palabras clave de C#

Checked y Unchecked (Referencia de C#)

checked (Referencia de C#)

Otros recursos

Referencia de C#