装箱是将值类型转换为引用类型,拆箱是将引用类型转为值类型。
这样说对吗?

解决方案 »

  1.   

    对的,意思是这样的
    装箱:
    int a = 1;
    object obj = a;拆箱:
    int a = (int)obj;
      

  2.   

    对值类型才有装/拆箱的概念
    都2.0了还关心什么装拆箱
    =========
    那说说,为什么 C++ 和 Java 都有没有 boxing 和 unboxing 的概念吧,为什么 C# 偏偏要设计一个值类型出来?
      

  3.   

    不准确!
    装箱:值类型到object类型或到此值类型所实现的任何接口类型的隐式转换
    拆箱:从object类型到值类型或从接口类型到实现该接口的值类型的显式转换
    引用类型包括object,class,string,interface,delegate
      

  4.   

    那说说,为什么 C++ 和 Java 都有没有 boxing 和 unboxing 的概念吧,为什么 C# 偏偏要设计一个值类型出来?
    ---------------
    性能...当然是为了性能...不过装拆箱对性能的影响更偏重于大型的程序和软件...
    另外就是安全...值类型在编译时就指定了内存分配的大小并由系统自动释放...值类型和引用类型在实例化的时候是存储在不同的空间中的,值类型存储在Stack上,而引用类型是存储在Heap上,在装箱的过程中实际上是将在Stack上的值类型对象拷贝到Heap上,并以引用对象的存储格式保存,在这个过程中对所转换的引用类型对象进行修改操作,Stack上的值类型对象是不会变化的。而拆箱是将引用对象的值在拷贝回Stack上...理解了装拆箱和Stack、Heap之间的关系你就明白为什么了...