The unchecked
keyword prevents the compiler from checking for overflows/underflows.
For example:
const int ConstantMax = int.MaxValue;
unchecked
{
int1 = 2147483647 + 10;
}
int1 = unchecked(ConstantMax + 10);
Without the unchecked
keyword, neither of the two addition operations will compile.
This is useful as it may help speed up calculations that definitely will not overflow since checking for overflow takes time, or when an overflow/underflow is desired behavior (for instance, when generating a hash code).