Anytime a C# expression (I presume the same goes for VB) contains a non-constant value, the compiler will not check for out-of-bounds values. For example, if you initialize an integer as the sum of two values, one of which is outside the bounds for integers (-2,147,483,648 to 2,147,483,647), a runtime overflow exception will be generated, but not a compile error. Apparently checking for out-of-bounds values is computationally intensive and most of the time simply isn't worth the time/energy. However, if it is critical that your application generate a compile error for out-of-bounds values, you can use the checked keyword, which is actually classified as a primary operator in C# by Microsoft. You can put checked() around a statement you know might cause an overflow exception or checked{} around a block of code. You can also create a CheckedMethod() or if you want to explicitly avoid overflow checking, use the unchecked keyword or use UncheckedMethod() . Check (pun intended...