C# checked和unchecked运算符
c# 运算符 Checked
2023-09-11 14:21:53 时间
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。
相关文章
- C#运算符大全_各种运算符号的概述及作用
- [C#] 常用工具类——文件操作类
- C# winform 学习(一)
- how to get geometry type of layer using IMapServer3 and IMapLayerInfo? (C#)
- C#委托和事件机制
- c# TryParse
- C# 调用dll获取dll物理路径的方法
- C# 多线程参数传递
- C#中如何比较2个string类型的日期大小?
- C# 加密小工具代码实现
- C#基础——运算符
- [ VB ] If 运算符 [ C# ] 条件运算符 (?:)
- (六十九)c#Winform自定义控件-垂直滚动条-HZHControls
- C#枚举
- C# BeginInvoke EndInvoke获取返回值
- C#语法中一个问号(?)和两个问号(??)的运算符是什么意思?