《.NET框架程序设计》第5章 基元类型、引用类型与值类型
2011-10-06 08:13
274 查看
5.1 基元类型
基元类型可以用快捷语法。比如int a=0;等同于System.Int32 a=new System.Int32();
建议,使用全名,为了代码含义看起来更清晰。
5.1.1 Checked与Unchecked基元类型操作
默认情况下,编译器溢出检查是关闭。使用/checked+命令开启溢出检查。
数值运算溢出会抛出OverflowException异常。
使用/checked-命令关闭溢出检查,使用checked关键字检查溢出,如有溢出抛出。如果没用关键字,有溢出仍然执行程序。
建议,开发程序时开启溢出检查,发布程序时关闭溢出检查。
5.2 引用类型和值类型
值类型从内存栈上分配内存。值类型不受垃圾收集器的控制。
引用类型从内存托管上堆分配内存。所有成为"类"的都是引用类型。
结构与枚举是值类型,继承自System.ValueType类型。值类型不能做基类和派生类。
值类型初始化为0,引用类型初始化为null。
值类型的互相赋值,是内存一大块的拷贝。引用类型的互相赋值,是指针的拷贝。
建议,值类型不要用于频繁调用方法的参数和返回值。因为,值类型的拷贝方式决定。
5.3 值类型的装箱与拆箱
值类型转换成引用类型是装箱。引用类型转换成值类型是拆箱。
装箱与拆箱会消耗内存与速度,尽量减少使用。
什么时候应该手动装箱。
Int32 v=5;
Object o=v;
Console.write("{0},{1},{2}",o,o,o);
因为值类型没有方法表指针,所以不能多个线程对它同步访问。
基元类型可以用快捷语法。比如int a=0;等同于System.Int32 a=new System.Int32();
建议,使用全名,为了代码含义看起来更清晰。
5.1.1 Checked与Unchecked基元类型操作
默认情况下,编译器溢出检查是关闭。使用/checked+命令开启溢出检查。
数值运算溢出会抛出OverflowException异常。
使用/checked-命令关闭溢出检查,使用checked关键字检查溢出,如有溢出抛出。如果没用关键字,有溢出仍然执行程序。
建议,开发程序时开启溢出检查,发布程序时关闭溢出检查。
5.2 引用类型和值类型
值类型从内存栈上分配内存。值类型不受垃圾收集器的控制。
引用类型从内存托管上堆分配内存。所有成为"类"的都是引用类型。
结构与枚举是值类型,继承自System.ValueType类型。值类型不能做基类和派生类。
值类型初始化为0,引用类型初始化为null。
值类型的互相赋值,是内存一大块的拷贝。引用类型的互相赋值,是指针的拷贝。
建议,值类型不要用于频繁调用方法的参数和返回值。因为,值类型的拷贝方式决定。
5.3 值类型的装箱与拆箱
值类型转换成引用类型是装箱。引用类型转换成值类型是拆箱。
装箱与拆箱会消耗内存与速度,尽量减少使用。
什么时候应该手动装箱。
Int32 v=5;
Object o=v;
Console.write("{0},{1},{2}",o,o,o);
因为值类型没有方法表指针,所以不能多个线程对它同步访问。
相关文章推荐
- <NET CLR via c# 第4版>笔记 第5章 基元类型、引用类型和值类型
- 【CLR Via C#】第5章 基元类型、引用类型、值类型
- 第5章:基元类型、引用类型和值类型
- 《.NET框架程序设计》第五章 基元类型、引用类型与值类型
- 第5章 基元类型、引用类型和值类型
- 第5章:基元类型、引用类型和值类型(一)
- 第5章:引用类型
- 基元类型、引用类型和值类型
- Read the "clr via C#" of 基元类型,引用类型,值类型(第五章)
- 《CLR via C#》Part2之Chapter5 基元类型、引用类型和值类型(三)
- 第5章 引用类型 (四)
- 从头学起-基元类型,引用类型,值类型
- 第5章 引用类型 (五)
- 第5章 引用类型(7)Date 类型
- CLR Via C# 学习笔记(1) 基元类型 值类型 引用类型
- 《CLR via C#》读书笔记--基元类型、引用类型和值类型
- 带着问题读CLR via C#(四)基元类型,引用类型和值类型(下)
- .Net框架程序设计-读书笔记(第五章 基元类型、引用类型和值类型)
- CLR.Via第三版第五章 基元类型、引用类型和值类型
- C# 基元类型 引用类型和值类型