簡體   English   中英

C#-什么可能導致此處進行溢出檢查?

[英]C# - What could cause overflow checking here?

我習慣於C#不執行溢出檢查,如語言規范所述(第7.5.12節):

對於未由任何已檢查或未檢查的運算符或語句包圍的非常數表達式(在運行時評估的表達式),除非外部因素(例如編譯器開關和執行環境配置)要求使用,否則將不檢查默認的溢出檢查上下文。檢查評估。

在底層代碼中進行數組邊界檢查時,我利用了這一點:

if ((uint)index >= (uint)TotalCount)
    ...

如果index為負,我希望它成為一個較大的正數,以便超過TotalCount。 但是,令我驚訝的是,負數會產生OverflowException,我必須將表達式包裝在unchecked()中。 我瀏覽了Visual Studio中的項目選項,但沒有看到啟用或禁用溢出檢查的選項。 那么為什么會在這里呢?

它應該在項目中。

  1. 雙擊屬性文件夾。
  2. 生成選項卡。
  3. 單擊高級...按鈕。
  4. 取消選中“檢查算術上溢/下溢”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM