Suggestion:

1.尽量使用符号数值类型(比如Int32和Int64),而不要使用无符号的数值类型(比如UInt32和UInt64)。这允许编译器检测更多的上溢/下溢错误。除此之外,类库的多个部分(比如Array和String的Length属性)被硬编码为返回有符号的值。这样一来,在代码中四处移动这些值时,需要进行的强制类型转换就少了。较少的强制类型转换使代码更整洁,更容易维护。除此之外,无符号的数值类型不相容于CLS的(不符合cls的要求).

2.写代码时,如果代码可能发生你不希望的溢出(可能是因为无效的输入数据而发生的,比如需要使用由最终用户或客户机提供的数据来处理一个请求),就把这些代码放到一个checked块中,同时还应捕捉OverflowException,从容的从错误中恢复。

3.写代码时,将允许发生溢出的代码显式放到一个unchecked块中,比如在计算一个校验和(checksum)的时候。

4.对于没有使用checked或unchecked的任何代码,都假定你希望在发生溢出时抛出一个异常,比如在输入时一直的前提下计算一些东西(比如质数),此时的溢出应被记为bug。

转载于:https://www.cnblogs.com/kingdom_0/articles/2307143.html

CLR VIA C#(一)相关推荐

  1. WinDbg加载不同版本CLR

    WinDbg调试.net2.0和.net4.0程序有所不同,因为.net4.0使用新版本的CLR.例如: mscoree.dll 变为 mscoree.dll 和 mscoreei.dll, msco ...

  2. 【CLR的执行模型:将源代码编译成托管模块】

    CLR:由多种不同编程语言使用的运行库 托管模块:中间语言和元数据 非托管语言:C/C++,不过此为特殊,可以写成托管代码 托管语言:C# 托管模块 1,PE32/PE32+头:PE32运行在win3 ...

  3. 《CLR via C#》笔记——CLR的执行模型

    一.将源代码编译成托管代码 1, CLR(Common Language Runtime)公共语言运行时是一个可由多种语言使用的"运行时",CLR的核心功能(比如内存管理,程序集加 ...

  4. Infragistics NetAdvantage 2006 Volume 2 CLR 2.0曲折安装

    上个月看到Infragistics NetAdvantage 2006 Volume 2 CLR 2.0(新特性)新鲜出炉,就一直想安装试用.昨天qq上得知已经有人在使用了,赶紧google一个dow ...

  5. Microsoft.NET框架程序设计--20 CLR寄宿、应用程序域、反射

    应用程序域是CLR提供的一种旨在减少内存使用.提高系统系能的新型机制.而反射使得我们可以很容易使用自己活着第三方的类型来增强应用程序的功能,从而帮助我们设计出可动态扩展的应用程序. 1.元数据:.NE ...

  6. CLR via C#(第3版):.net中的定时器整理总结

    这几天由于项目中设计到用定时器实时调用webserver获取数据,开始想到用线程,但是由于webservice返回太慢,上一个线程无法结束,下个线程无法开启.出现假死的情况.所以考虑使用定时器,这样每 ...

  7. 《CLR Via C# 第3版》笔记之(十五) - 接口

    接口(interface)和类(class)是CLR中应用最为广泛的两个概念.灵活的应用接口,可以构造出各种经典的设计模式. 接口的语法并不复杂,本篇主要记录接口中一些容易忽略的地方,以及如何更好的使 ...

  8. 探讨SQL Server 2005.NET CLR编程

    本文将解释如何在SQL Server 2005中以尽可能最简单的方法创建基于.NET的CLR子例程.本文主要针对在服务器端使用SQL Server 2005的.NET开发者. 一. 创建SQL Ser ...

  9. 深入探索.NET内部了解CLR如何创建运行时对象

    前言 SystemDomain, SharedDomain, and DefaultDomain. 对象布局和内存细节. 方法表布局. 方法分派(Method dispatching). 因为公共语言 ...

  10. [CLR via C#]5.3 值类型的装箱和拆箱

    原文:[CLR via C#]5.3 值类型的装箱和拆箱 在CLR中为了将一个值类型转换成一个引用类型,要使用一个名为装箱的机制. 下面总结了对值类型的一个实例进行装箱操作时内部发生的事: 1)在托管 ...

最新文章

  1. 企业微服务中台落地实践和思想之我见
  2. 什么叫组网_5G NSA和SA是什么?有什么不同?
  3. java安装_快速提示:Java中的ISO 8601持续时间
  4. 中国蒸汽拖把行业竞争状况分析及十四五发展趋势研究报告2021年版
  5. 网易云信稳定背后的秘密
  6. Ubuntu设置环境变量并立即生效
  7. Es6常用方法filter
  8. python更新数据库表的时间字段_python更新数据库中某个字段的数据(方法详解)
  9. 爬虫-练习引导-豆办电影爬取-json数据的处理
  10. JAVA笔记:Java常用类库
  11. SLS机器学习介绍(05):时间序列预测
  12. 服务器2008系统驱动3008驱动,sas3008驱动
  13. 21世纪最需要的7种人才
  14. 铁路CAD设计辅助软件V2.0
  15. 低成本5W无线充电器方案FS68001B简便充电芯片
  16. python中取余%
  17. 运动控制屏蔽回原点屏蔽z_index是什么_安卓智能手表它不香吗,为什么要花 3199 买 Apple Watch?...
  18. 什么是dB?为什么要用dB?dB家族成员有哪些?
  19. ts16949 软件开发流程图_TS16949体系过程流程图(1)
  20. html把字母a显示为其asc码,HTML ASCII码

热门文章

  1. eclipse安装OpenExplorer插件--快速打开文件目录
  2. easyui 的 toolbar配合图标使用
  3. linux克隆后没有eth0,解决linux机器克隆后eth0不见的问题
  4. mysql索引有几种_MySQL有哪些索引类型 ?
  5. c字符串分割成数组_数组与字符串
  6. 二级计算机环境,计算机环境变量_二级计算机关于变量的问题
  7. zabbix中mysql连不上的排错_zabbix使用排错 - oschina130111的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. 孙鑫-MFC笔记二--MFC框架剖析
  9. 2018-CBAM论文讲解
  10. C#记事本的简单开发