When must we use checked
operator in C#?
Is it only suitable for exception handling?

- 16,580
- 5
- 54
- 111

- 22,228
- 29
- 98
- 151
4 Answers
You would use checked
to guard against a (silent) overflow in an expression.
And use unchecked
when you know a harmless overflow might occur.
You use both at places where you don't want to rely on the default (project-wide) compiler setting.
Both forms are pretty rare, but when doing critical integer arithmetic it is worth thinking about possible overflow.
Also note that they come in two forms:
x = unchecked(x + 1); // ( expression )
unchecked { x = x + 1;} // { statement(s) }

- 263,252
- 30
- 330
- 514
checked
will help you to pick up System.OverFlowException
which will go unnoticed otherwise
int result = checked (1000000 * 10000000);
// Error: operation > overflows at compile time
int result = unchecked (1000000 * 10000000);
// No problems, compiles fine
From The checked and unchecked operators
The checked and unchecked operators are used to control the overflow checking context for integral-type arithmetic operations and conversions.
In a checked context, if an expression produces a value that is outside the range of the destination type, the result depends on whether the expression is constant or non-constant. Constant expressions cause compile time errors, while non-constant expressions are evaluated at run time and raise exceptions.
In an unchecked context, if an expression produces a value that is outside the range of the destination type, the result is truncated.

- 162,879
- 31
- 289
- 284
-
1OK, that's what they are.. Could you elaborate on when you want to do it? – NotMe Mar 02 '10 at 14:44