Checked Unchecked

Sirve para comprobar el desbordamiento, con checked lo comprueba, unchecked no lo hace.

Por ejemplo

byte a = 55;
byte b = 210;
byte result = (byte)(a + b);

El comportamiento por defecto, depende de la configuración de compilación, pero creo que es unchecked.

unchecked
{
    byte a = 55;
    byte b = 210;
    byte result = (byte)(a + b);
}

El ejemplo anterior, dará como resultado 9, ya que un byte solo puede contener un entero entre 0 y 255.

La suma es de 210 + 55 = 265 (supera en 10 al máximo), por lo que que cuando llega a 255 el siguiente numero es 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 que son los 10 extras.

Con checked

checked
{
    byte a = 55;
    byte b = 210;
    byte result = (byte)(a + b);
}

Lanzara una System.OverflowException

Conclusión, si es importante que no sobrepase el máximo de un tipo, usar checked