什么时候必须在C#中使用checked运算符?

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

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

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

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

另请注意,它们有两种forms:

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

checked将帮助您获取System.OverFlowException ,否则将不会被注意到

 int result = checked (1000000 * 10000000); // Error: operation > overflows at compile time int result = unchecked (1000000 * 10000000); // No problems, compiles fine 

来自已检查和未选中的运算符

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

在已检查的上下文中,如果表达式生成的值超出目标类型的范围,则结果取决于表达式是常量还是非常量。 常量表达式导致编译时错误,而非常量表达式在运行时计算并引发exception。

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

选中 , 未选中

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