C# unchecked

對於因為整數類型參與算術操作和窄化類型轉換時產生的“溢出異常”——System.OverflowException,在某些算法來講不算真正的“異常”,相反這種溢出常常為程式所用。C#中checkedunchecked操作符用於整形算術運算時控制當前環境中的溢出檢查。下列運算參與了checked和unchecked檢查:
●預定義的++和--:一元操作符,當其運算元類型為整型時。
●預定義的-:一元操作符,當其運算元為整型數時。
●預定義的+、-、*、/等二元操作符,當兩個運算元數據類型都是整型。
●從一種整型到另一種整型地顯式數據轉換。
當上述運算之一產生一個目標類型無法表示的大數時,在使用了checked操作符的表達式中,如果運算是一個常量表達式,則產生運行時錯誤,否則,當運行時執行該運算時會溢出異常。而在使用了uncheced操作符的表達式中,返回值被截掉不符合目標類型的高位。
如果非常量表達式沒有被任何checked或unchecked操作符或語句所包括時,運行時計算該表達式的值,是否會產生溢出,依據於外部因素,如編譯器狀態、執行環境參數等。而對於一個常量表達式而言,總是默認為進行溢出檢查。
使用了unchecked操作符後,溢出的發生不會導致編譯錯誤。但這往往會出現一些不可預期的結果,所以使用unchecked操作符要小心。

相關詞條

熱門詞條

聯絡我們