选中和未选中之间有什么区别?

时间:2010-09-22 17:02:20

标签: c# checked unchecked

之间有什么区别
checked(a + b)

unchecked(a + b)

5 个答案:

答案 0 :(得分:19)

这些是在结果数值运算中检查(或不检查)溢出的运算符。在checked情况下,如果操作结果超出数据类型允许的最小值或最大值,则会引发OverflowException异常。

更多信息可从MSDN获得。

答案 1 :(得分:10)

它控制overflow checking进行整数运算。

答案 2 :(得分:7)

如果a + b大于数据类型的最大值,则checked将抛出异常。未选中将滚动值的溢出并将其添加到零。

答案 3 :(得分:5)

Language Specification有一篇关于差异的好文章。

  

checked和unchecked运算符用于控制整数类算术运算和转换的溢出检查上下文。

class Test
{
   static readonly int x = 1000000;
   static readonly int y = 1000000;
   static int F() {
      return checked(x * y);      // Throws OverflowException
   }
   static int G() {
      return unchecked(x * y);   // Returns -727379968
   }
   static int H() {
      return x * y;               // Depends on default
   }
}

答案 4 :(得分:1)

其他答案涵盖了两者之间的差异。值得注意的是,如果a和b是浮点数,则没有区别。它仅适用于整数运算。

您还可以设置构建选项,以便检查所有内容。这意味着您的应用程序运行速度稍慢,但您不需要对算术运算进行检查。

这是一篇很好的文章,描述了一些陷阱:http://www.codeproject.com/KB/cs/overflow_checking.aspx