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
Referencia
Checked y Unchecked (Referencia de C#)