2010-03-02 9 views

Respuesta

14

Se podría utilizar checked para protegerse contra un desbordamiento (silencio) en una expresión.
Y use unchecked cuando sepa que podría producirse un desbordamiento inofensivo.

Utiliza ambos en lugares donde no desea confiar en la configuración del compilador predeterminada (para todo el proyecto).

Ambas formas son bastante raras, pero cuando se realiza una aritmética de enteros críticos, vale la pena pensar en un posible desbordamiento.

También tenga en cuenta que vienen en dos formas:

x = unchecked(x + 1); // (expression) 
unchecked { x = x + 1;} // { statement(s) } 
3

De The checked and unchecked operators

El comprueban y operadores sin marcar se utilizan para controlar el contexto comprobación de desbordamiento para de tipo integral operaciones aritméticas y conversiones.

En un contexto comprobado, si una expresión produce un valor que está fuera del rango del tipo de destino , el resultado depende de si la expresión es constante o no constante. Las expresiones constantes provocan errores de tiempo de compilación, mientras que las expresiones no constantes se evalúan en tiempo de ejecución y generan excepciones.

En un contexto no se controla, si una expresión produce un valor que es fuera del rango del tipo de destino , el resultado se trunca.

checked, unchecked

+1

OK, eso es lo que son ... ¿Podrían dar más detalles cuando lo quieran? – NotMe

6

checked le ayudará a recoger System.OverFlowException, que pasará desapercibido de lo contrario

int result = checked (1000000 * 10000000); 
    // Error: operation > overflows at compile time 

int result = unchecked (1000000 * 10000000); 
    // No problems, compiles fine 
3

checked vs unchecked también es útil en esos momentos cuando estás haciendo matemáticas enteras. especialmente incrementando operaciones y usted sabe que aumentará más allá de UInt32.MaxValue, y quiere que se desborde inofensivamente de nuevo a 0.

Cuestiones relacionadas