C# checked和unchecked运算符
1、作用
checked和unchecked运算符用于CLR(公共语言运行时)强制对它们所作用的代码块,进行(不进行)代码溢出检测
2、示例说明
有代码如下:
static void Main(string[] args)
{
byte b = ;
b++;
Console.WriteLine(b.ToString());
}
byte数据类型只能包含0~255的数,所以递增的值就会发生溢出。CLR如何处理这个溢出,取决于许多因素,包括编译器选项,很多时候可能会得不到我们的想要的溢出报错。
So,C#提供了checked关键字,就是用来干这个的,如果把一个可能存在溢出的代码块标记为checked,CLR就会执行溢出检查,如果发生溢出,就抛出OverflowExceprion异常.修改上面的代码:
byte b = ;
checked
{
b++;
}
Console.WriteLine(b.ToString());

ok,CLR抛出了OverflowExceprion异常.
那么unchecked关键字的作用,禁止CLR进行溢出检测,代码如下:
byte b = ;
unchecked
{
b++;
}
Console.WriteLine(b.ToString());
在本例中,不会抛出异常,但会丢失数据,因为byte的数据类型不能包含256,溢出的位会丢失,所以b变量得到的值是0;
注:unchecked是默认行为,只有在checked的代码块中有需要不进行检查的代码,才显示的使用unchecked。
C# checked和unchecked运算符的更多相关文章
- C# unchecked运算符
一.C# unchecked运算符 unchecked运算符用于取消整型算术运算和转换的溢出检查. 二.提示 默认情况下,都是unchecked选项.因此,只有在需要把几个未检查的代码行放在一个明确标 ...
- 使用checked和unchecked来对整数溢出进行检测和忽略
在C#中,整数int32的取值为-2147483648~2147473647(可以通过int.MaxValue和int.MinValue获得)当超出这个范围后,编译器不会进行检查,仍然会进行运算,但得 ...
- Java异常之checked与unchecked
首先,java的异常分为Error和Exception.这两类都是接口Throwable的子类.Error及Exception及其子类之间的关系,大致可以用下图简述. 注意事项: 1. Error仅在 ...
- C# checked和unchecked详解
1.对基元类型执行的许多算术运算都可能造成溢出,有如下代码: Byte b=100; b=(Byte)(b+200); 简单的解读上面的代码: 第一步,将所有的操作数都扩大至32位或者64位(根据操作 ...
- c# 使用checked和unchecked
首先要知道int型在c#中是一个32位的数.由此可以知道int型的取值范围是(-2147483648~2147483647)当要使用int的最小值或者是最大值的时候,可以使用int.MinValue和 ...
- Checked Exception & Unchecked Exception
查Spring事务管理时看到一句话: Spring使用声明式事务处理,默认情况下,如果被注解的数据库操作方法中发生了unchecked异常,所有的数据库操作将rollback:如果发生的异常是chec ...
- checked 和 unchecked 基元类型操作
对基元类型执行的许多算术运算都可能造成溢出: Byte b = ; b = (Byte) (b + ); // b 现在包含 44(或者十六进制值 2C) 重要提示:执行上述算术运算时,第一步要求所有 ...
- C# checked和unchecked 关键字详解
checked 和 unchecked关键字用来限定检查或者不检查数学运算溢出的:如果使用了checked发生数学运算溢出时会抛出OverflowException:如果使用了unchecked则不会 ...
- C#基础之checked与 unchecked的使用
C#基础之checked与 unchecked的使用 以上都是C#中的两个关键字的使用.据官网给出的相关介绍是:C# 语句既可以在已检查的上下文中执行,也可以在未检查的上下文中执行. 在已检查的上下文 ...
随机推荐
- read与write
函数原型 ssize_t read(int filedes, void *buf, size_t count); ssize_t write(int filedes, void* buf, siz ...
- Gym - 100989H (贪心)
After the data structures exam, students lined up in the cafeteria to have a drink and chat about ho ...
- Android-Activity临时数据的保存
Activity临时数据的保存是非常重要的,例如:一款小说APP应用,读者使用这款APP看到了223页,用户也没有去记看了多少页: 突然去接了个电话,或者开启的应用程序太多了,可能会导致这款APP应用 ...
- ifstat命令行统计网络流量
下载 ifstat , http://gael.roualland.free.fr/ifstat/ifstat-1.1.tar.gz tar xzvf ifstat-1.1.tar.gz ...
- IntelliJ OpenCV 开发环境搭建
Windows下的IntelliJ + OpenCV开发环境搭建 基于IntelliJ IDEA 15 和 OpenCV 3.1.0 1. 在OpenCV官网下载OpenCV安装程序,双击解压到目标目 ...
- ES6——let 和 const
Let 1.使用 Let声明的变量,所声明的变量只在命令所在的代码块内有效. { Let a=1; var b=2; console.log(a) //在代码块里面 可以正常输出a } console ...
- 一文解锁BILIBILI、ACFUN等弹幕网站是如何审核视频
欢迎访问网易云社区,了解更多网易技术产品运营经验. 人工审核对于A站和B站都是很重要的. AcFun稿件审核通行标准(V1.1) 表明,要审核的东西非常多,除了内容本身的合规性.调性,还有画质音质.撞 ...
- iOS 安装包瘦身(下篇)
本文来自网易云社区 作者:饶梦云 2.4. 清理无用代码 2.4.1. Dead Code Stripping Activating this setting causes the -dead_str ...
- go iris xorm包使用(sqlite3数据库增删查改)
官网https://studyiris.com/example/orm/xorm.html例子,稍做修改 1.我是win64,但没有遇到mingw问题,应该是之前安装过gcc环境,参考:测试一下rob ...
- OCP换题库了,052新加的考题及答案整理-第16题
16.Your database Is configured In archivelog mode. The USERS01 tablespace Is currently online. You a ...