C#装箱和拆箱
C#装箱和拆箱 疑问 都知道C#有装箱和拆箱的操作,听闻也都是讲int类型转换成object类型就是装箱,将object类型再转回int类型就是拆箱。 描述的通俗点: 装箱将值类型转换成引用类型, 拆箱将引用类型转换成值类型。 那看来是要先了解一下引用类型和值类型了。 引用类型和值类型 在C#中,所有称之为"类(class)"的类型,都是引用类型,而值类型都是标注为结构(struct)或者枚举(enum)。 下面就来看一看引用类型和值类型,在实例化的时候发生了什么操作(首先自然是申明一下两种类型了): 实例化了一个引用类型(SomeRef)和一个值类型(SomeVal),在调用的时候看看会发生什么: 上述代码执行完,可以看到在C#在操作引用类型的时候会执行以下几步 1.在托管堆上分配一块内存; 2.在分配的对象中,还需要加一些额外成员(类型对象指针,同步索引块),这些成员必须初始化 3.对象中的字段要初始化为0,(本例中在执行someRef.x = 5时,将字段x改为5) 4.在托管堆上分配一个对象时,可能会执行一次垃圾收集操作 看完引用类型,接下来看一下值类型: 可...