2010-02-24 52 views
1

我习惯C#不执行溢出检查,作为语言规范状态(第7.5.12节):C# - 什么可能导致溢出检查在这里?

对于非常量表达式(表达式在运行时计算),其不被封闭的任何检查或未检查的运算符或语句,除非外部因素(例如编译器切换和执行环境配置)要求检查评估,否则将取消选中默认溢出检查上下文。

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

如果指数是负的,我希望使其超过TOTALCOUNT它成为一个大的正数:

我做当数组边界在低级别的代码检查正是利用了这一点。然而,令我惊讶的是,负数产生了OverflowException,我必须在unchecked()中包装表达式。我查看了Visual Studio中的项目选项,但没有看到启用或禁用溢出检查的选项。那么它为什么会在这里呢?

回答

7

它应该在项目中。

  1. 双击属性文件夹。
  2. 生成选项卡。
  3. 单击高级...按钮。
  4. 取消选中“检查算术上溢/下溢”。
+0

谢谢,我以前从没注意到,高级按钮! – Qwertie 2010-02-24 18:53:03

相关问题