check与uncheck关键字用法解析讲义.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
check与uncheck关键字用法解析讲义

中的check与uncheck关键字用法解析 这篇文章主要介绍了中的check与uncheck关键字用法,以实例形式较为详细的分析了check与uncheck关键字的各种常见用法与使用时的注意事项,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了中的check与uncheck关键字用法。分享给大家供大家参考。具体分析如下: checked和unchecked是两个不常用的关键字,但是确是非常有用的关键字,对此,建议测试时开启全局checked编译器选项。 1. 一段编译没经由过程的代码 复制代码 代码如下: int a = int.MaxValue * 2; 以上代码段编译没有经由过程,在VS2010中会有一条红色的波浪线指出这段代码有题目:”The operation overflows at compile time in checked mode”。这说了然编译器会在编译时搜检数学运算是否溢出。然则编译时能搜检出溢出的景象仅限于应用常量的运算。2中的代码编译器就不报不失足误来了。 2. 一段编译经由过程然则不克不及获得正确成果的代码 复制代码 代码如下: int temp = int.MaxValue; int a = temp * 2; Console.Write(a); 我先把常量int.MaxValue的值给了姑且变量temp,然后应用姑且变量乘以2策画成果赋值给a;这段代码是可以正常履行的,履行成果将输出 -2。 这申明在运行时默认景象法度是不会搜检算术运算是否溢出的,cpu尽管算,对于它来讲按规矩算就是了,成果对不合错误不是他的错。 正常履行了,而成果是错误的,这是很是危险的景象,该如何避免这种危险呢?请看3 3. 应用checked关键字,溢出时报警 复制代码 代码如下: int temp = int.MaxValue; try { ??? int a = checked(temp * 2); ????(a); } catch (OverflowException) { (溢出了,要处理惩罚哟); } 应用checked关键字润饰temp*2的策画成果,并应用try catch在产生溢出时做处理惩罚。以上代码将输出:“溢出了,要处理惩罚哟” 题目是若是一段代码中有很多算术运算都须要做溢出搜检,那会有很多checked润饰的表达式,怎么办呢?请看4 4. checked关键字可以润饰一个语句块,请看下面代码 复制代码 代码如下: int temp = int.MaxValue; try { ??? checked ??? { ??????? int num = temp / 20; ??????? int a = temp * 2; ??????? int c = temp * 1000; ??? } } catch (OverflowException) { ??? Console.WriteLine(溢出了,要处理惩罚哟); } ? 以上法度输出成果和3一样 5. checked在避免算术溢出方面很有效,那么unchecked呢,它有效吗?答案是必然的,有时辰我们不须要正确的策画成果,我们只是须要那么一个数罢了,至于溢出不溢出的关系不大,比如说生成一个对象的HashCode,比如说按照一个算法策画出一个相对随机数,这都是不须要正确成果的。如下代码片段 复制代码 代码如下: class Person { ?? public string Name { get; set; } ? ??? public string Title { get; set; } ? ??? public override int GetHashCode() ??? { ??????? return unchecked(Name.GetHashCode() + Title.GetHashCode()); ??? } } unchecked也可以润饰语句块,其用法和checked完全一样。 6. checked和unchecked是可以嵌套应用的,固然没啥意义。语句是否是checked以比来嵌套的checked或者unchecked决意 7. 从IL中看checked关键字 C#代码: 复制代码 代码如下: static void Main(string[] args) { ??? int a = int.MaxValue; ??? int b = a * 2; ??? int c = checked(a * 2); ??? int d = unchecked(a + 3); ? ??? Console.Read(); } 对应IL 复制代码 代码如下: .method private hidebysig st

文档评论(0)

441113422 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档