http://www.cnblogs.com/qq0827/p/3281150.html 一. 基元类型 编译器能够直接支持的数据类型叫做基元类型.例如int, string等.基元类型和.NET框架类库FCL存在着直接的映射关系. string和String? 面试的时候曾经被问到过这个问题,C#中的基元类型string实际上对应了System.String(FCL)类型,所以两者使用的时候没有什么不同. 类型转换 编译器能够在基元类型之间进行显式或隐式转换.如果转换是安全的,也就是转换过程不…
一.引用类型与值类型的区别 CLR支持两种类型:引用类型和值类型.引用类型总是从托管堆上分配的,C#的new操作符会返回对象的内存地址.使用引用类型时,必须注意到一些性能问题. 1)内存必须从托管堆上分配. 2)堆上分配的每个对象都有一些额外的成员(类型对象指针和同步索引块),这些成员必须初始化. 3)对象中的其他字节(为字段而设)总是设为零. 4)从托管城市化上分配一个对象时,可能强制执行一次垃圾收集操作. 为了提升简单的.常用的类型的性能,CLR提供了名为"值类型"的轻量级类型.值…
编程语言的基元类型 编译器直接支持的数据类型称为基元类型.基元类型直接映射到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 有符…
编程语言的基元类型   某些数据类型如此常用,以至于许多编译器允许代码以简化的语法来操纵它们. System.Int32 a = new System.Int32();  // a = 0 a = 1;   等价于: int a = 1; 这种语法不仅增强了代码的可读性,其生成的IL代码与使用System.Int32时生成的IL代码是完全一致的.   编译器直接支持的数据类型称为基元类型(primitive type).基元类型直接映射到Framework类库(FCL)中存在的类型.如C#中,i…
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操作符或语句中调用方法,不会对该方法造成任何影响,…
Cp5基元类型引用类型值类型 基元类型 编译器直接支持的类型,基元类型直接映射到FCL中存在的类型. 作者希望使用FCL类型名称而避免使用关键字.他的理由是为了更加的清晰的知道自己写的类型是哪种.但是实际当中关键字更常用,FCL类型的写法太繁琐了.特别是你不用过多考虑和其他语言交互的时候,只使用C#的时候.所以这一点上我还是不同意作者的看法. 类型的隐式转换和显示转换过程中的可能存在的问题.checked,unchecked;来检查溢出: CLR并不认为Decimal是基元类型,所以执行速度要慢…
5 基元类型,引用类型和值类型 5.3 值类型的装箱和拆箱 将值类型转化为引用类型需要进行装箱(boxing) 赋值,传参等操作,如果从值类型转为引用类型,都会进行装箱 装箱的代价比较大 申请一块堆内存 从栈上把内容复制过去 使用值类型作为参数的泛型集合,操作起来不需要进行装箱和拆箱 装箱的例子 public static void Main() { int v = 5; object o = v; v = 123; Console.WriteLine(v + ", " + (int)…
第二遍看这本书,决定记录一下加深印象. 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.…
 基元类型和FCL类型 FCL类型就是指Int32这种类型,这是CLR支持的类型. 而基元类型就是指int这种类型,这是C#编译器支持的,实际上在编译后,还是会被转为Int32类型. 而且学过C的朋友肯定记得,int在32位机器和64位机器字节数可能不同,但是C#.NET里int就是表示Int32. 因为在基元类型和FCL类型之间,有一个一一对应的映射关系.另外注意dynamic实际上对应的类型就是Object,只是说C#编译器允许用简单的语法让dynamic变量参与动态调度. 表达式由字面量构…