CLR.Via第三版第五章 基元类型、引用类型和值类型
2014-08-11 22:24
267 查看
5.1 编程语言的基元类型
编译器直接支持的数据类型成为基元类型(primitive type),基元类型直接映射到Framework类库(FCL)中存在的类型。
5.2引用类型和值类型
引用类型总是从托管推上分配的,C#的new操作符会返回对象的内存地址--即指向对象数据的内存地址。适用引用类型时,必须注意到一些性能问题
1:内存必须从托管对上分配。
2:对上分配的每个对象都有一些额外的成员,这些成员必须初始化。
3:对象中的其他字节(为字段而设)总是设为零。
4:从托管堆上分配一个对象时,可能强制执行一次垃圾收集操作。
如果所有类型都是引用类型,程序的性能将会显著下降,假设每次适用一个int32值时,都进行一次内存分配,性能会收到多么大的影响!!所以,为了提升简单的,常用的类型的性能,CLR提供了名为“值类型”的轻量级类型。
值类型一般在线程栈上分配。在代表值类型的一个变量中,并不高喊一个指向实例的指针,相反变量中包含了实例本身的字段,由于变量已经包含了实例的字段,所以为了操作实力中的字段,不再需要提领一个指针。值类型的实例不受垃圾回收器的控制,因此,值类型的使用缓解了托管堆中的压力,并减少了一个程序在其生存期内需要进行的垃圾回收次数。
在文档中查看一个类型时,任何称为“类”的类型都是引用类型。
相反,文档将所有值类型都称为结构或者枚举。
如何考虑就爱那个一个类型定义为值类型,而不是引用类型?
具体的说,除非一下所有条件都满足,否则不应将一个类型声明为值类型。
1:类型具有基元类型的行为,换言之,这是一个十分简单的类型,其中没有成员会修改类型的任何实例字段。
2:类型不需要从其他任何类型继承。
3类型也不会派生出其他任何类型。
同时还需要满足下列任何一个条件:
1:类型的实例较小(约为16字节或更小)
2:类型的实例较大(大约16字节),但不作为方法的实参传递,也不从方法返回。
编译器直接支持的数据类型成为基元类型(primitive type),基元类型直接映射到Framework类库(FCL)中存在的类型。
5.2引用类型和值类型
引用类型总是从托管推上分配的,C#的new操作符会返回对象的内存地址--即指向对象数据的内存地址。适用引用类型时,必须注意到一些性能问题
1:内存必须从托管对上分配。
2:对上分配的每个对象都有一些额外的成员,这些成员必须初始化。
3:对象中的其他字节(为字段而设)总是设为零。
4:从托管堆上分配一个对象时,可能强制执行一次垃圾收集操作。
如果所有类型都是引用类型,程序的性能将会显著下降,假设每次适用一个int32值时,都进行一次内存分配,性能会收到多么大的影响!!所以,为了提升简单的,常用的类型的性能,CLR提供了名为“值类型”的轻量级类型。
值类型一般在线程栈上分配。在代表值类型的一个变量中,并不高喊一个指向实例的指针,相反变量中包含了实例本身的字段,由于变量已经包含了实例的字段,所以为了操作实力中的字段,不再需要提领一个指针。值类型的实例不受垃圾回收器的控制,因此,值类型的使用缓解了托管堆中的压力,并减少了一个程序在其生存期内需要进行的垃圾回收次数。
在文档中查看一个类型时,任何称为“类”的类型都是引用类型。
相反,文档将所有值类型都称为结构或者枚举。
如何考虑就爱那个一个类型定义为值类型,而不是引用类型?
具体的说,除非一下所有条件都满足,否则不应将一个类型声明为值类型。
1:类型具有基元类型的行为,换言之,这是一个十分简单的类型,其中没有成员会修改类型的任何实例字段。
2:类型不需要从其他任何类型继承。
3类型也不会派生出其他任何类型。
同时还需要满足下列任何一个条件:
1:类型的实例较小(约为16字节或更小)
2:类型的实例较大(大约16字节),但不作为方法的实参传递,也不从方法返回。
相关文章推荐
- 基元类型、引用类型和值类型
- 《CLR Via C#》 学习心得之三 基元类型、引用类型和值类型
- <NET CLR via c# 第4版>笔记 第5章 基元类型、引用类型和值类型
- 《CLR via C#》读书笔记(5)基元类型、引用类型和值类型
- Chapter5 基元类型、引用类型和值类型
- [转]C#基元类型、引用类型和值类型以及装箱拆箱
- C# 基元类型 引用类型和值类型
- 《CLR via C#》读书笔记--基元类型、引用类型和值类型
- [C#1] 3-基元类型、引用类型和值类型、装箱拆箱
- 第五章 基元类型引用类型和值类型
- CLR via C#深解笔记三 - 基元类型、引用类型和值类型 | 类型和成员基础 | 常量和字段
- 第5章:基元类型、引用类型和值类型
- .Net框架程序设计-读书笔记(第五章 基元类型、引用类型和值类型)
- 05.基元类型、引用类型和值类型
- 第5章 基元类型、引用类型和值类型
- 基元类型、引用类型和值类型
- 《CLR via C#》读书笔记 之 基元类型、引用类型和值类型
- 基元类型、引用类型和值类型
- 【C#进阶系列】05 基元类型、引用类型和值类型
- 实际举例C#引用类型和值类型的区别