首页 > 其他 > 详细

定义值类型

时间:2015-04-28 11:08:59      阅读:210      评论:0      收藏:0      [点我收藏+]

本文引用《CLR Via C#》  

  设计自己的类型时,要仔细地考虑是否将其定义成值类型,而不是引用类型。某时候,值类型能够提供更好的性能,值类型的主要优势在于它们不作为对象在托管堆上分配。

  满足以下全部条件适合将类型定义成值类型:

  1. 类型具有基元类型的行为。换言之,这是一个十分简单的类型,其中没有成员会修改类型的任何字段。若一个类型没有提供会更改其字段的成员,就说该类型是不可变类型。事实上,对于许多值类型来说,我们都建议将其所有字段都标记为readonly(只读);

  2. 类型不需要从任何类型继承;

  3. 类型也不会派生出任何类型。

  类型实例的大小也应考虑在内,因为在默认情况下,实参是以传值方式传递的,这会造成对值类型实例中的字段进行复制,从而损坏性能。同样的,被定义为返回一个值类型的一个方法在返回时,实例中的字段会复制到调用者分配的内存中,从而损坏性能。所有,要将一个类型定义成值类型,除了上述原因,还要满足以下条件:

  1. 类型的实例较小(约16字节或更小);

  2. 类型的实例较大,但不作为方法的实参,也不作为方法的返回值。

定义值类型

原文:http://www.cnblogs.com/hachun/p/4462370.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!