什么时候必须在C#中使用checked操作符?

时间:2010-03-02 14:37:58

标签: c# operators checked

我们什么时候必须在C#中使用checked运算符? 它只适用于异常处理吗?

4 个答案:

答案 0 :(得分:14)

您可以使用checked来防止表达式中的(无声)溢出 当您知道可能发生无害溢出时,请使用unchecked

您可以在不想依赖默认(项目范围)编译器设置的地方使用它们。

这两种形式都非常罕见,但在进行关键整数运算时,值得考虑可能的溢出。

另请注意,它们有两种形式:

 x = unchecked(x + 1);    // ( expression )
 unchecked { x = x + 1;}  // { statement(s) }

答案 1 :(得分:6)

checked会帮助你选择 System.OverFlowException ,否则会被忽视

int result = checked (1000000 * 10000000);   
    // Error: operation > overflows at compile time

int result = unchecked (1000000 * 10000000);  
    // No problems, compiles fine

答案 2 :(得分:3)

来自The checked and unchecked operators

  

已检查和未选中的运算符   用于控制溢出   检查整数类型的上下文   算术运算和转换。

     

在已检查的上下文中,如果是表达式   产生一个超出的值   目的地类型的范围,   结果取决于是否   表达式是常数或   非恒定。常量表达式   导致编译时错误,而   评估非常量表达式   在运行时并提出异常。

     

在未经检查的上下文中,如果是   表达式生成一个值   超出目的地的范围   类型,结果被截断。

checkedunchecked

答案 3 :(得分:3)

checked vs. unchecked在您进行整数数学运算时也很有用。特别是递增操作,你知道你将增加UInt32.MaxValue,并希望它无害地溢出回0