因为在.net中两种类型的机制和使用是有区别的

解决方案 »

  1.   

    值类型。 
    值类型是在栈中分配内存,在声明时初始化才能使用,不能为null。 
    值类型超出作用范围系统自动释放内存。 
    主要由两类组成:结构,枚举(enum),结构分为以下几类: 
    整型(Sbyte、Byte、Char、Short、Ushort、Int、Uint、Long、Ulong) 
    浮点型(Float、Double) 
    decimal 
    bool 
    用户定义的结构(struct) 引用类型。 
    引用类型在堆中分配内存,初始化时默认为null。 
    引用类型是通过垃圾回收机制进行回收。 
    包括类、接口、委托、数组以及内置引用类型object与string。 
      

  2.   

    object obj;
    int i=10,y=0;
    obj=i;  //装箱操作
    y=(int)obj   //拆箱操作 拆箱时要求 obj 已经经过装箱操作

      

  3.   

    最简单的例子...打印任意一个数据,因为编程时无法确定参数的类型...
    public void print(object o)
    {
        Console.Write(o);
    }
    使用...这时就发生了装箱和拆箱...
    int i=0;
    print(i)
    .NET 2.0以上应该尽量采用泛型来避免装拆箱,只有在确实无法预知参数类型时才可以用...
      

  4.   


    一般来说装拆箱是为了通用性,比如Eventhandle委托的第一个参数是引用类型object
    但因为某种原因要采用结构体也可以, 这时候系统自动装箱(隐式装箱)
    void Form_Click(object sender,EventArgs e)
    {
     struct c=(struct)sender;//拆箱要显示地进行
    }