CLR-基元类型以及溢出检查】的更多相关文章

原文:[CLR via C#]5.1 基元类型 某些数据类在开发中非常常用,以至于许多编译器允许代码已简化的语法来操作它们.例如可以使用以下语法来分配一个整数: System.Int32 a = new System.Int32(); 当然,你肯定不愿意使用这种语法,C#允许使用如下所示的语法: int a = 0; 这种语法不仅增强代码的可读性,而且生成的IL代码和是有System.Int32时生成的IL代码是完全一致的. 编译器直接支持的数据类型称为基元类型(primitive type).…
5.1 编程语言的基元类型 c#不管在什么操作系统上运行,int始终映射到System.Int32; long始终映射到System.Int64 可以通过checked/unchecked操作符/语句打开或关闭溢出检查,如: byte b = 100; b = checked((byte)(b + 200)); uint invalid = unchecked((uint)(-1)); checked { b += 200; } 在checked操作符或语句中调用方法,不会对该方法造成任何影响,…
最新更新请访问: http://denghejun.github.io   前言 今天重新看了下关于CLR基元类型的东西,觉得还是有必要将其记录下来,毕竟这是理解CLR成功 之路上的重要一步,希望你也和我一样. 基元类型 编译器直接支持的数据类型称之为基元类型,针对那些程序员自定义的类型而言.所有基元类型 直接映射到FCL(Framework class library)中存在的类型:比如C#中int直接映射到System. Int32类型,且在编译为IL(中间语言)时,他们将会是一模一样的:…
对基元类型执行的许多算术运算都可能造成溢出: Byte b = ; b = (Byte) (b + ); // b 现在包含 44(或者十六进制值 2C) 重要提示:执行上述算术运算时,第一步要求所有操作数都扩大为 32 位值(或者 64 位值,如果任何操作数需要超过 32 位来表示的话).所以, b 和 200(这两个值都不超过 32 位) 首先转换成 32 位值,然后加到一起.结果是一个 32 位值(十进制 300,或十六进制 12C).该值在存回变量 b 之前,必须转型为一个 Byte.C…
1.一些开发人员说应用程序在32位操作系统上运行,int代表32位整数:在64位操作系统上运行,int代表64位整数.这个说法是完全错误的.C#的int始终映射到System.Int32,所以不管在什么操作系统上运行,代表的都是32位整数. 2.checked.unchecked来检查.不检查表达式是否产生溢出:C#默认关闭溢出检查: UInt32 invalid=unchecked((UInt32)(-1)); -----------------------------------------…
一.什么是基元类型 某些数据类型如此常用,以至于许多编译器允许代码以简化的语法来操纵它们.例如,可以使用以下语法来分配一个整数: System.Int32 a = new System.Int32(); 但你肯定不愿意使用这种语法来声明并初始化一个整数,因为实在是太繁琐了.幸运的是,包括C#在内的许多编译器都允许换用如下所示的语法: int a = 0; 这种语法不仅增加了代码的可读性,而且生成的IL代码与使用System.Int32时生成的IL代码是完全一样的.这种编译器直接支持的数据类型称为…
编程语言的基元类型 编译器直接支持的数据类型称为基元类型(primitive type).基元类型直接映射到framework类型(fcl)中存在的类型. 下表列出fcl类型 从另一个角度,可以认为C#编译器自动假定所有源代码文件都添加了一下using指令: c#编译器非常熟悉基元类型,会在编译代码时应用自己的特殊规则,具体地说,c#编译器支持与类型转换.字面值以及操作符有关的模式. Int32 i = ; Int64 l = i; //从int32隐式转换为int64 Single s = i…
编程语言的基元类型 编译器直接支持的数据类型称为基元类型.基元类型直接映射到Framework类库中存在的类型.例如:C#中的int直接映射到System.Int32类型.下表给出了C#基元类型与对应的FCL类型 C#规范中写道从风格上说,最好是使用关键字,而不是使用完整的系统类型名称,但作者认为最好使用FCL类型名称 许多开发人员纠结于到时使用string还是String.由于C#的string关键字直接映射到System.String,所以两者没有区别.有些人说应用程序在32位操作系统运行,…
5.1 基元类型 编译器直接支持的数据类型称为基元类型(primitive type). 以下4行到吗生成完全相同的IL int a = 0; //最方便的语法 System.Int32 b = 0; //方便的语法 int c = new int(); //不方便的语法 System.Int32 d = new System.Int32(); //最不方便的语法 C#基元类型与对应的FCL类型 C#中的基元类型 FCL类型 是否与CLS兼容 描述 sbyte System.SByte N 有符…
第二遍看这本书,决定记录一下加深印象. 1,基元类型 什么事基元类型?基元类型是直接映射到FrameWork类库(FCL)中存在的类型,编译器直接支持的数据类型.比如int直接映射到System.Int32类型,就像是添加了using应用:using sbyte=System.SByte. C#基元类型 FCL类型 说明 sbyte System.SByte 有符号8位 byte System.Byte 无符号8位 short System.Int16 有符号16位 ushort System.…