分类: IT业界
2012-03-22 11:41:03
在了解了内存机制和熟悉了通用规则的基础上,我们就可以很好地总结出值类型和引用类型在系统设计时,如何做出选择,如何去选择使用值类型。因为引用类型才是.NET的主体,所以它在大部分的场合中已经受到了青睐。
1.值类型的应用场合
1)MSDN中建议以类型的大小作为选择值类型或者引用类型的决定性因素。数据局较小的场合,最好考虑以值类型来实现系统性能的改善。
2)结构简单,不必在多态的情况下,值类型是较好的选择。
3)类型性质不表现出行为时,不必以类来实现,那么以存储数据为主要目的的情况下,值类型是优先的选择。
4)参数传递时,值类型默认情况下传递的是实例数据,而不是内存地址,因此数据传递情况下的选择,取决于函数内部的实现逻辑。值类型可以有高效的内存支持,并且在不暴露内部结构的情况下返回实例数据的副本,从安全性上可以考虑值类型,但是过多的值传递也会损伤性能的优化,应适当选择。
5)值类型没有继承性,如果类型的选择没有子类继承的必要,优先考虑值类型。
6)在可能会引起装箱与拆箱操作的集合或者队列中,值类型不是很好的选择,因为会引起对值类型的装箱操作,导致额外内存的分配。
2.引用类型
1)打个比方来说,引用类型是.NET世界的全职杀手,.NET世界就是由类构成的,类是面向对象的基本概念,也是程序框架的基本要素,因此灵活的数据封装特性
使得引用类型成为主流。
2)引用类型适用于结构复杂、有继承、有多态、突出行为的场合。
3)参数传递情况也是需要考虑的因素。