首页 > 其他 > 详细

C#数据类型

时间:2014-04-06 15:28:30      阅读:349      评论:0      收藏:0      [点我收藏+]

一、C#的数据类型:

bubuko.com,布布扣


二、值类型与引用类型的区别:

 

值类型

引用类型

变量存放的内容

    实际值

   引用

默认值

   0

   空

内存分配

  分配在栈中

  分配在堆中

内存回收

  作用域结束时,所占空间自行释放

  使用完后不立即回收,而是交给GC处理回收

效率

  值类型效率高,不需要地址转换

  引用类型效率较低,需要进行地址转换

赋值操作

  创建一个新对象

  创建一个引用

类型扩展

  不易扩展,所有值类型都是密封(seal)的,所以无法派生出新的值类型

  具有多态的特性,方便扩展



三、装箱与拆箱:

 

装箱

拆箱

概念

  值类型→引用类型

 

  装箱是值类型到 object 类型或到此值类型所实现的任何接口类型的隐式转换。

  引用类型→值类型

 

  拆箱从 object 类型到值类型或从接口类型到实现该接口的值类型的显式转换。

举例

//装箱,将值类型转换为引用类型。

 

  int val= 100;

  object obj= val;     //隐式转换

  Console.WriteLine (“对象的值= {0}", obj);

//拆箱,将值类型转换为引用类型,再由引用类型转换为值类型的过程。

  int val= 100;

  object obj= val;

  int num= (int) obj;   //显式转换

  Console.WriteLine ("num: {0}", num);

内部操作

1)首先从托管堆中为新生成的引用对象分配内存。

2)然后将值类型的数据拷贝到刚刚分配的内存中。

3)返回托管堆中新分配对象的地址。

1)首先获取托管堆中属于值类型那部分字段的地址,这一步是严格意义上的拆箱。

2)将引用对象中的值拷贝到位于线程堆栈上的值类型实例中。

注:被装过箱的对象才能被拆箱



C#数据类型,布布扣,bubuko.com

C#数据类型

原文:http://blog.csdn.net/cyl_happygirl/article/details/23019373

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