在閱讀源碼時,發現有段代碼爲 unchecked包括,單突然忘記了 unchecked是幹什麼的了,遇事不決問google,將此紀錄一下,以便溫習。google
首先,來簡單說一下他們的做用:blog
checked:打開運算溢出檢查資源
unchecked:關閉運算溢出檢查編譯器
首先,要知道int類型在C#中是一個32位的數,由此能夠知道int類型的取值範圍是 -2147483648~2147483647,當要使用int的最小值或最大值時,能夠使用int.MinValue和int.MaxValue這兩個屬性。源碼
在這裏,咱們要討論的也是int類型溢出,事實上,當int型中的最大+1就會變成最小值,當咱們但願這個int值不會超過限制時,能夠經過手動啓用溢出檢查功能。io
如何啓動呢?編譯
在VS中是容許設置項目屬性來啓用或禁止運算溢出檢查的。解決方案資源管理器=>右擊選擇屬性=>在屬性對話框選擇生成=>單機右下角的高級=>在高級對話框中,勾選【檢查算數溢出】選項,以下圖所示方法
一樣的道理,在代碼中,能夠使用unchecked和checked關鍵字,來選擇性的打開和關閉代碼中一個特定部分的整數溢出檢查,這些關鍵字將覆蓋項目的編譯器選項。im
使用了unchecked就不會強制檢查溢出的代碼塊,也就不會拋出OverflowException這個異常了。項目
須要注意的是:只有在checked塊中的整數運算纔會檢查,對於塊中的方法調用,不會檢查所調用方法中的整數運算。