【问题标题】:When must we use checked operator in C#?我们什么时候必须在 C# 中使用检查运算符?
【发布时间】:2011-01-22 18:13:02
【问题描述】:

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

【问题讨论】:

    标签: c# operators checked


    【解决方案1】:

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

    您在不想依赖默认(项目范围)编译器设置的地方同时使用这两种设置。

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

    还要注意它们有两种形式:

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

    【讨论】:

      【解决方案2】:

      checked 将帮助您获取 System.OverFlowException,否则会被忽视

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

      【讨论】:

        【解决方案3】:

        来自The checked and unchecked operators

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

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

        在未经检查的上下文中,如果 表达式产生的值是 在目的地范围之外 类型,结果被截断。

        checked, unchecked

        【讨论】:

        • 好的,就是这样......你能详细说明你想什么时候做吗?
        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-07-02
          • 2011-01-21
          • 1970-01-01
          • 2017-06-28
          • 2014-07-15
          • 2017-02-21
          • 1970-01-01
          • 2013-04-30
          相关资源
          最近更新 更多