c# 的引用类型和值类型和数据的拆箱和装箱

c#中引用类型和值类型的区分:

   一般的以calss声明的变量的类型是引用类型的,引用类型是存放到内存的堆上存放的是数据的地址。值类型是像int float 还有struct等属于值类型的数据类型,值类型的数据是存放在堆栈上的存放的数据本身。

拆箱和装箱:

   我们可以用一个例子来理解装箱和拆箱的关系和作用。我们都知道小时候在村里有哪种你给他一些铝制品他可以给你溶成一个你想要的其他的铝制器件。装箱和拆箱就是这个原理。例如:你想把一种数据类型转化为另一种数据类型,int16到int32的数据类型的转化,int16的数据是在堆栈上的要把它装到堆上并且把类型转换为object类型,就像是你把一些铝制品融化成铝水。成他的基础类型,转化成int32类型的时候把这种基础类型根据你要转化的类型,就相当于一种模具。把他从堆中放到堆栈中这样就完成的数据的类型的转化。

  在装箱和拆箱的过程中,涉及到了数据在堆——堆栈--堆的转化。严重的影响的运行的速度。在我们写程序的时候应该尽量避免这样的操作。例如在类型转化的时候我们可以自己定义转化函数这样在运行速度上将有很大的提高。

posted @ 2015-05-27 12:45  杰骜不驯  阅读(158)  评论(0编辑  收藏  举报