当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > C#中的checked、unchecked操作符

ASP.NET
如何在ASP.NET中使用SmtpMail发送邮件
在VB.NET中利用Split和Replace函数计算字数
Attribute应用:简化ANF自定义控件初始化过程
ASP.NET 2.0移动开发入门之使用样式
ASP.NET 2.0中使用OWC生成图表
ASP.NET 2.0中控件的简单异步回调
一个无法捕获ADO.NET Dataset的内存错误
深入解读ADO.NET2.0的十大最新特性
.Net平台下的分布式缓存设计
ASP.NET全局异常处理浅析
ASP.NET 2.0中文验证码的实现
浅析.NET平台编程语言的未来走向
.net 框架程序设计收藏
使用ASP.NET MVC Futures 中的异步Action
详解.NET中的XmlReader与XmlWriter
关于.NET中的Server push技术
asp.net页面执行机制
对比JSP和ASP.NET的存储过程
.NET 4.0不会包含System.Shell.CommandLine
ASP.NET十个有效性能优化的方法

ASP.NET 中的 C#中的checked、unchecked操作符


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 162 ::
收藏到网摘: n/a

checked和unchecked操作符用于整型算术运算时控制当前环境中的溢出检查。下列运算参与了checked和unchecked检查(操作数均为整数):
1)  预定义的++和――一元运算符。
2)  预定义的-一元运算符。
3)  预定义的+、-、×、/等二元操作符。
4)  从一种整型到另一种整型的显示数据转换。
当上述整型运算产生一个目标类型无法表示的大数时,可以有相应的处理方式:
(一)使用checked
若运算是常量表达式,则产生编译错误:The operation overflows at complie time in checked mode.
若运算是非常量表达式,则运行时会抛出一个溢出异常:OverFlowException异常
(二)使用unchecked
无论运算是否是常量表达式,都没有编译错误或是运行时异常发生,只是返回值被截掉不符合目标类型的高位。
(三)既未使用checked又未使用unchecked
若运算是常量表达式,默认情况下总是进行溢出检查,同使用checked一样,会无法通过编译。
若运算是非常量表达式,则是否进行溢出检查,取决于外部因素,包括编译器状态、执行环境参数等。
下例说明了checked和unchecked操作符在非常量表达式中的使用方法:
class Test
{
       static int x = 1000000;
       static int y = 1000000;
       static int F()
{
       return checked(x*y);     //运行时抛出OverFlowException异常
}
static int G()
{
       return unchecked(x*y);  //截去高位部分,返回-727379968
}
static int H()
{
       return x*y;     //依赖于编译器的默认设置,一般是不检查
}
}
checked和unchecked操作符在常量表达式中的使用方法:
class Test
{
       const int x = 1000000;
       const int y = 1000000;
       static int F()
{
       return checked(x*y);     //编译错误,编译无法通过
}
static int G()
{
       return unchecked(x*y);  //截去高位部分,返回-727379968
}
static int H()
{
       return x*y;     //编译错误,编译无法通过
}
}