检查与取消关键字怎么在asp.net中使用

介绍

本篇文章给大家分享的是有关检查与取消关键字怎么在asp.net中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

具体分析如下:

检查和无节制的是两个不常用的关键字,但是确是非常有用的关键字,对此,建议测试时开启全局检查编译器选项。

1。一段编译没经由过程的代码

代码如下:

int=int.MaxValue * 2;


以上代码段编译没有经由过程,在VS2010中会有一条红色的波浪线指出这段代码有题目:“操作溢出在编译时检查模式”。这说了然编译器会在编译时搜检数学运算是否溢出。然则编译时能搜检出溢出的景象仅限于应用常量的运算。2中的代码编译器就不报不失足误来了。

2。一段编译经由过程然则不克不及获得正确成果的代码

代码如下:

int temp=int.MaxValue;
int=temp * 2;
Console.Write (a),


我先把常量int。执行的值给了姑且变量体温,然后应用姑且变量乘以2策画成果赋值给一个;这段代码是可以正常履行的,履行成果将输出2。
这申明在运行时默认景象法度是不会搜检算术运算是否溢出的,cpu尽管算,对于它来讲按规矩算就是了,成果对不合错误不是他的错。
正常履行了,而成果是错误的,这是很是危险的景象,该如何避免这种危险呢?请看3

3。应用检查关键字,溢出时报警

代码如下:

int temp=int.MaxValue;
尝试
{
,,,int(临时* 2)=检查;
,,,,Console.WriteLine (a),
}
抓住(OverflowException)
{
Console.WriteLine(“溢出了,要处理惩罚哟“);
}


应用检查关键字润饰临时* 2的策画成果,并应用试着赶上在产生溢出时做处理惩罚。以上代码将输出:“溢出了,要处理惩罚哟”
题目是若是一段代码中有很多算术运算都须要做溢出搜检,那会有很多检查润饰的表达式,怎么办呢?请看4

4。检查关键字可以润饰一个语句块,请看下面代码

代码如下:

int temp=int.MaxValue;
尝试
{
,,,检查
,,,{
,,,,,,,int num=temp/20;
,,,,,,,int=temp * 2;
,,,,,,,int c=temp * 1000;
,,,}
}
抓住(OverflowException)
{
,,,Console.WriteLine(“溢出了,要处理惩罚哟“);
}


,
以上法度输出成果和3一样

5。检查在避免算术溢出方面很有效,那么不呢,它有效吗?答案是必然的,有时辰我们不须要正确的策画成果,我们只是须要那么一个数罢了,至于溢出不溢出的关系不大,比如说生成一个对象的HashCode,比如说按照一个算法策画出一个相对随机数,这都是不须要正确成果的。如下代码片段

代码如下:

类人
{
,,公共字符串名称{;设置;}
,
,,,公共字符串标题{得到;设置;}
,
,,,公共覆盖int GetHashCode方法()
,,,{
,,,,,,,返回不(Name.GetHashCode () + Title.GetHashCode ());
,,,}
}


不也可以润饰语句块,其用法和检查完全一样。

6。检查和检查是可以嵌套应用的,固然没啥意义。语句是否是检查以比来嵌套的检查或者不决意

7。从IL中检查看关键字
c#代码:

代码如下:

静态void Main (string [] args)
{
,,,int=int.MaxValue;
,,,int b=* 2,
,,,int c=检查(* 2),
,,,int d=不(+ 3);
,
,,,Console.Read ();
}


对应IL

代码如下:

。私人hidebysig静态void 方法;Main (string [] args) cil管理
{
,.entrypoint
,//代码size ,,,,,26日(0 x1a)
,.maxstack 2
,。local init ([0] int32,
,,,,,,,,,,[1]int32 b,
,,,,,,,,,,[2]int32 c
,,,,,,,,,,[3]int32 d)
,IL_0000:,nop
,IL_0001:,ldc.i4 ,,,0 x7fffffff
,IL_0006:,stloc.0
,IL_0007:,ldloc.0
,IL_0008:,ldc.i4.2
,IL_0009:,mul
,IL_000a:,stloc.1
,IL_000b:,ldloc.0
,IL_000c:,ldc.i4.2
,IL_000d:,mul.ovf
,IL_000e:,stloc.2
,IL_000f:,ldloc.0
,IL_0010:,ldc.i4.3
,IL_0011:,添加
,IL_0012:,stloc.3
,IL_0013:,call ,,,,,int32 [mscorlib] System.Console: Read ()
,IL_0018:,流行
,IL_0019:,ret
}//方法程序:结束:主要

请看IL中的红色和绿色加重显示代码,可以看出应用检查时,IL的运算是mul.ovf不应用检查或者应用未经检查时的IL运算函数是mul或者添加、不带. ovf。

8。检查或者不只影响其包抄的语句,不会影响到包抄的语句内调用函数的代码块,如下示例:

代码如下:

静态void Main (string [] args)
{
,,,int=int.MaxValue;
,,,int b=20;

检查与取消关键字怎么在asp.net中使用