C#装箱与拆箱
2012-04-24 23:08 just doo it 阅读(210) 评论(0) 收藏 举报要明白装箱与拆箱,必须先了解C#的两种基本数据类型,一种是值类型(ValueType),另一种是引用类型(Reference Type),像int、bool、float、struct等都是值类型,类、数组、字符串等都是引用类型;值类型和引用类型最主要区别是:值类型创建在堆栈上,做赋值运算时直接在堆栈上拷贝一份,而引用类型创建在托管堆上(称为一个对象或实例),当做赋值运算时将一个引用类型变量的值赋给另一个引用类型变量时,它不是拷贝一份给另一个变量,而是使另一个变量指向它指向的托管堆地址;
装箱操作就是将值类型包装成引用类型,具体过程是:将值类型的值包装成引用类型,然后在托管堆分配内存空间,将包装后的值类型放在托管堆分配后的内存中,因为该操作设计到内存的分配,所以会占用CPU资源,所以装箱会降低效率,应该尽量避免装箱操作;
而拆箱操作就是将引用类型拆为值类型;具体过程是:检查对象实例,确保它是给定值类型的一个装箱值;将对象中的值复制给值类型变量;该过程没有涉及到内存的分配,所以不占用CPU资源;
注:要拆箱必须先装箱,即拆箱后的类型是装箱前的类型


浙公网安备 33010602011771号