c#中的unchecked是什么意思,起什么作用?
2009-08-31 22:37
525 查看
Checked与Unchecked
对于因为整数类型参与算术操作和类型转换时产生的“溢出异常”——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语义。
对于因为整数类型参与算术操作和类型转换时产生的“溢出异常”——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#中的unchecked是什么意思,起什么作用?
- 探讨c#中的unchecked是什么意思,起什么作用?
- 探讨c#中的unchecked是什么意思,起什么作用?
- c#中的unchecked是什么意思,起什么作用?
- [转] c#中的unchecked是什么意思,起什么作用?
- c#中的unchecked是什么意思,起什么作用?
- C# 里面的 #region 是什么意思 以及partial 作用
- c#中 ?? 是什么意思?
- unity3d中烘焙是什么意思?有什么作用?
- C#中string[ ] args是什么意思,又有什么用呢
- C#序列化和反序列化到底是什么意思
- C#中的PadLeft表示什么意思
- sql中左连接是什么意思啊,有什么作用啊?能否给个例子,谢谢大家
- C#学习之as是什么意思?
- Class a=new Class(){a=b,c=d}。C#语言什么意思 主要是实例化后怎么有大括号从来没这么用过。
- 在C#中??和?分别是什么意思
- java和C#中 定义变量,加一个小括号是什么意思。。。
- 上行带宽和下行带宽是什么意思?各有什么作用?
- C#语法中一个问号(?)和两个问号(??)的运算符是什么意思?
- C# 参数带this是什么意思(扩展方法)