码迷,mamicode.com
首页 > Windows程序 > 详细

EffectiveC#6--区别值类型数据和引用类型数据

时间:2015-10-08 23:03:17      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:

1. 设计一个类型时,选择struct或者class是件简单的小事情,但是,一但你的类型发生了改变,

对所有使用了该类型的用户进行更新却要付出(比设计时)多得多的工作.

2.值类型:无多态但性能佳。

  值类型(结构)存储数据,而引用类型(类)表现行为或职责。

3.

public class C
 { 
private MyType _a = new MyType( ); 
private MyType _b = new MyType( ); 
// Remaining implementation removed.

 } 

C var = new C();

  如果MyType是值类型,那么你只做了一次堆内存分配。大小正好是MyType大小的2倍.

           MyType是引用类型,那么就做了三次堆内存分配:一次是为C对象,占4字节(假设你用的是32位的指针),另2次是为包含在C对象内的MyType对象分配堆内存

MyType [] var = new MyType[ 100 ];

   如果MyType是一个值类型数据,一次就分配出100个MyType的空间。

  如果MyType是引用类型,就只有一次内存分配。每一个数据元素都是null。当你初始化数组里的每一个元素时,你要上演101次分配工作且这101次内存分配比1次分配占用更多的时间。分配大量的引用类型数据会使堆内存出现碎片,从而降低程序性能。如果你创建的类型意图存储数据的值,那么值类型是你要选择的。

4.如果你对下面所有问题回答YES,你应该创建值类型数据

 1、类型的最基本的职责是存储数据吗?

2、它的属性上有定义完整的公共接口来访问或者修改数据成员吗?

3、我对类型决不会有子类自信吗?

4、我对类型决不会有多太性自信吗?

EffectiveC#6--区别值类型数据和引用类型数据

标签:

原文地址:http://www.cnblogs.com/tiantianle/p/4862416.html

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