码迷,mamicode.com
首页 > 其他好文 > 详细

定义值类型

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

标签:

本文引用《CLR Via C#》  

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

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

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

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

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

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

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

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

定义值类型

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!