checked/unchecked 控制整數算術運算與整數顯式轉換的溢位檢查內容。影響範圍:
++ --(一元)、-(一元負號)+ - * /(二元,雙運算元皆為整數)| 內容 | 常數運算式溢位 | 非常數運算式溢位 |
|---|---|---|
checked | 編譯錯誤 | 拋 OverflowException |
unchecked | 截斷高位,無錯誤 | 截斷高位,無例外 |
| 無標記(預設) | 編譯錯誤 | 視編譯器選項/執行環境而定 |
// 運算子:僅影響括號內單一運算式
int z = checked(x * y);
// 語句:影響區塊內所有受影響運算
checked {
int a = x * y;
int b = (int)longVal;
}
checked(F(1000000, 1000000)) 不影響 F 內部的 x*y。float/double/decimal)。
const int X = 1000000, Y = 1000000;
checked { var a = X * Y; } // 編譯錯誤 CS0220
unchecked { var b = X * Y; } // b = -727379968
var c = X * Y; // 編譯錯誤(常數預設 checked)
checked。unchecked 區塊。checked 運算子(改用語句或專案層級 /checked+)。