[英]C# - What could cause overflow checking here?
我習慣於C#不執行溢出檢查,如語言規范所述(第7.5.12節):
對於未由任何已檢查或未檢查的運算符或語句包圍的非常數表達式(在運行時評估的表達式),除非外部因素(例如編譯器開關和執行環境配置)要求使用,否則將不檢查默認的溢出檢查上下文。檢查評估。
在底層代碼中進行數組邊界檢查時,我利用了這一點:
if ((uint)index >= (uint)TotalCount)
...
如果index為負,我希望它成為一個較大的正數,以便超過TotalCount。 但是,令我驚訝的是,負數會產生OverflowException,我必須將表達式包裝在unchecked()中。 我瀏覽了Visual Studio中的項目選項,但沒有看到啟用或禁用溢出檢查的選項。 那么為什么會在這里呢?
它應該在項目中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.