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# 语句既可以在已检查的上下文中执行,也可以在未检查的上下文中执行. 在已检查的上下文 ...
随机推荐
- 获取host信息
QT如果要进行网络编程首先需要在.pro”中添加如下代码: QT += network 在头文件中包含相关头文件: #include <QHostInfo> #include <QN ...
- OpenCV 4 Android
OpenCV4Android Want a Quick Start link? Use this tutorial: “OpenCV for Android SDK”. 想要快速开始吗?使用这个教程: ...
- CSS float与clear & 替换元素与非替换元素
css3盒模型(box)中的一个概念,在css这种,每个元素生成了包含内容的框,有内联元素和块级元素之分.也可以区分为替换元素与非替换元素. 替换元素:浏览器根据标签的元素与属性来判断显示具体的内容. ...
- jQuery控制iframe框架内元素
用jQuery在IFRAME里取得父窗口的某个元素的值只好用DOM方法与jquery方法结合的方式实现了 1.在父窗口中操作 选中IFRAME中的所有单选钮$(window.frames[" ...
- Centos7 因内存 可用大小不足,被killed的解决办法
Linux的内存分配采取的是一种更加积极的分配策略,它假设应用申请了内存空间后并不会立即去使用它,所以允许一定量的超售,当应用真的需要使用它的时候,操作系统可能已经通过回收了其他应用的内存空间而变得有 ...
- sp_helptext输出错行问题解决
相信,大家对sp_helptext存储过程一定不陌生,它可以帮你快速获取存储过程等对象的定义.但它有一个致命的缺点就是:每行最多返回255个nvarchar类型的字符,假如有一个编写不规范的存储过程, ...
- 谷歌三大核心技术(一)Google File System中文版
http://www.open-open.com/lib/view/open1328763454608.html
- Oracle 下载安装教程(doc文件)
之前一直没有怎么接触Oracle数据库,最近公司有个项目中需要用到,所以开始折腾Oracle.刚开始走了很多弯路,为了帮助更多和我一样刚开始接触Oracle的小白,我理了一下的思路 下载地址(需要登录 ...
- WPF 修改dev GridControl行背景色
<dxg:TableView.RowStyle> <Style TargetType="dxg:RowControl" > <Style.Trigge ...
- 一文读懂加固apk的开发者是怎么想的
有人说加固会明显拖慢启动速度,同时造成运行卡顿,严重降低用户体验,而且加固是完全可以脱壳的,只需要pc配合进行断点调试就能抓到解密后的dex文件,加固并没有所说的那么安全. 但是为什么还有一大批开发者 ...