Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The unchecked keyword is used to suppress overflow-checking for integral-type arithmetic operations and conversions.
Remarks
In an unchecked context, if an expression produces a value that is outside the range of the destination type, the result is truncated. For example:
unchecked
{
int val = 2147483647 * 2;
}
Because the calculation above is performed in an unchecked block, the fact that the result is too large for an integer is ignored, and val
is assigned the value -2
. By default, overflow detection is enabled, which has the same effect as using checked.
In the example above, had unchecked been omitted, a compilation error would occur because the expression uses constants and the result is known at compile time. The unchecked keyword also suppresses overflow detection for non-constant expressions, which otherwise result in OverflowException at runtime.
The unchecked keyword can also be used as an operator, like this:
public int UncheckedAdd(int a, int b)
{
return unchecked(a + b);
}
Example
This sample shows how to use the unchecked statement, using unchecked with constant expressions.
// statements_unchecked.cs
using System;
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
C# Language Specification
For more information, see the following sections in the C# Language Specification:
5.3.3.2 Block statements, checked, and unchecked statements
7.5.12 The checked and unchecked operators
8.11 The checked and unchecked statements
See Also
Reference
C# Keywords
Checked and Unchecked (C# Reference)
checked (C# Reference)