zoukankan      html  css  js  c++  java
  • C# checked和unchecked运算符

    1、作用

    checked和unchecked运算符用于CLR(公共语言运行时)强制对它们所作用的代码块,进行(不进行)代码溢出检测

    2、示例说明

    有代码如下:

    static void Main(string[] args)
    {
         byte b = 255;
         b++;
         Console.WriteLine(b.ToString());
    }

    byte数据类型只能包含0~255的数,所以递增的值就会发生溢出。CLR如何处理这个溢出,取决于许多因素,包括编译器选项,很多时候可能会得不到我们的想要的溢出报错。

    So,C#提供了checked关键字,就是用来干这个的,如果把一个可能存在溢出的代码块标记为checked,CLR就会执行溢出检查,如果发生溢出,就抛出OverflowExceprion异常.修改上面的代码:

    byte b = 255;
    checked
    {
        b++;
    }
    Console.WriteLine(b.ToString());

    ok,CLR抛出了OverflowExceprion异常.

    那么unchecked关键字的作用,禁止CLR进行溢出检测,代码如下:

    byte b = 255;
    unchecked
    {
        b++;
    }
    Console.WriteLine(b.ToString());

    在本例中,不会抛出异常,但会丢失数据,因为byte的数据类型不能包含256,溢出的位会丢失,所以b变量得到的值是0;

    注:unchecked是默认行为,只有在checked的代码块中有需要不进行检查的代码,才显示的使用unchecked。

  • 相关阅读:
    HTTP状态码详解
    Django QuerySet 进阶
    初识Django
    小白学习之路,网络编程(下)
    小白学习之路,网络编程(上)
    小白学习之路,面向对象补充
    用正则表达式实现的计算器
    小白学习之路,初识面向对象
    小白学习之路,常用模块
    函数补充知识
  • 原文地址:https://www.cnblogs.com/GreenLeaves/p/6831734.html
Copyright © 2011-2022 走看看