探讨c#中的unchecked是什么意思,起什么作用?
2018-10-12 13:59
555 查看
Checked与Unchecked
对于因为整数类型参与算术操作和类型转换时产生的“溢出异常”――System.OverflowException,在某些算法来讲不算真正的“异常”,相反这种溢出常常为程序所用。C#通过引入checked和unchecked关键字来控制这种特殊情况的需求。它们都可以加于一个语句块前(如:checked{……}),或者一个算术表达式前(如:unchecked(x+y)),其中加checked标志的语句或表达式如果发生算术溢出,则抛出System.OverflowException类型的异常,而加unchecked标志的语句发生算术溢出时,则不抛出异常。下面是一个示例:
程序输出:
可以看到同样的算术操作,用checked抛出了溢出异常,而unchecked只是将溢出的位丢弃而得到剩下的32位组成的十进制整数值。值得指出的是可以用“/checked”编译器选项指定整个文件的代码为checked语义,如果没有指定则默认为unchecked。如果同时在程序代码中指定checked或unchecked标志,又有了checked编译器选项,则除了标志为unchecked的代码外,其余的都有checked语义。
对于因为整数类型参与算术操作和类型转换时产生的“溢出异常”――System.OverflowException,在某些算法来讲不算真正的“异常”,相反这种溢出常常为程序所用。C#通过引入checked和unchecked关键字来控制这种特殊情况的需求。它们都可以加于一个语句块前(如:checked{……}),或者一个算术表达式前(如:unchecked(x+y)),其中加checked标志的语句或表达式如果发生算术溢出,则抛出System.OverflowException类型的异常,而加unchecked标志的语句发生算术溢出时,则不抛出异常。下面是一个示例:
using System;
class Test{
static void Main() {
int num1=100000,num2=100000,
result=0;
checked{ try { result= num1 * num2;}
catch(System.Overflo2wException e){ Console.WriteLine(e); }
finally{ Console.WriteLine(result);}
}
unchecked{ try { result= num1 * num2;}
catch(System.OverflowException (e){ Console.WriteLine(e);}
finally{ Console.WriteLine(result);}
}
}
}
程序输出:
System.OverflowException: Arithmetic operation resulted in an overflow.
at Test.Main()
0
1410065408
可以看到同样的算术操作,用checked抛出了溢出异常,而unchecked只是将溢出的位丢弃而得到剩下的32位组成的十进制整数值。值得指出的是可以用“/checked”编译器选项指定整个文件的代码为checked语义,如果没有指定则默认为unchecked。如果同时在程序代码中指定checked或unchecked标志,又有了checked编译器选项,则除了标志为unchecked的代码外,其余的都有checked语义。
您可能感兴趣的文章:
- 深入理解c# checked unchecked 关键字
- C#难点逐个击破(7):checked与unchecked
- C#中struct和class的区别详解
- C#中Convert.ToString和ToString的区别分析
- C#中Html.RenderPartial与Html.RenderAction的区别分析
- c#中(int)、int.Parse()、int.TryParse、Convert.ToInt32的区别详解
- C#中常量和只读变量的区别小结
- C#中属性和成员变量的区别说明
- 解析C#中[],List,Array,ArrayList的区别及应用
- C#入门之checked和unchecked的区别实例解析
相关文章推荐
- 探讨c#中的unchecked是什么意思,起什么作用?
- c#中的unchecked是什么意思,起什么作用?
- c#中的unchecked是什么意思,起什么作用?
- c#中的unchecked是什么意思,起什么作用?
- c#中的unchecked是什么意思,起什么作用?
- [转] c#中的unchecked是什么意思,起什么作用?
- C# 里面的 #region 是什么意思 以及partial 作用
- c#里namespace是什么意思?
- 在C#中internal关键字是什么意思?
- css 中的background:transparent到底是什么意思有什么作用
- 【C#】wpf中的xmlns命名空间为什么是一个网址,代表了什么意思
- C#语法中一个问号(?)和两个问号(??)的运算符是什么意思?
- 在C#中??和?分别是什么意思
- spring中<tx:advice></tx:advice>是什么意思?作用是什么?谁能简单说下
- c#中这个符号什么意思?(=>)
- C#学习之as是什么意思?
- C# @什么意思
- c#中 ?? 是什么意思?
- C#编程中using(){}有什么作用?
- 控件的enable view state属性什么意思,起何作用?