谁给我讲讲装箱拆箱啊`最好用例题using System;
using System.Collections.Generic;
using System.Text;namespace box
{
    class Program
    {
        static void fun(object o)
        {
            o = 2;
            Console.WriteLine(o);
        }        static void Main()
        {
            int i = 1;
            object obj = i; //隐式装箱
            Console.WriteLine(i);
            fun(obj);
            i = (int)obj;   //拆箱
            Console.WriteLine(i);
        }
    }
}
结果显示 
1
2
1Main()中最后一句输出的i=1 i的值没有变 是因为函数fun中的o指向了另一片内存   与Main()的obj无关
他不像c语言的指针一样int i = 5,*p;
p=&i;
*p=6;
i也就=6了
我说得对么 各位给我讲讲  我总以为C#中的引用类型=c语言的指针

解决方案 »

  1.   

    加ref就变了
    using System;
    using System.Collections.Generic;
    using System.Text;namespace box
    {
        class Program
        {
            static void fun(ref object o)
            {
                o = 2;
                Console.WriteLine(o);
            }        static void Main()
            {
                int i = 1;
                object obj = i; //隐式装箱
                Console.WriteLine(i);
                fun(ref obj);
                i = (int)obj;   //拆箱
                Console.WriteLine(i);
            }
        }
    }
      

  2.   

    装箱就是把一个值类型装进一个引用类型,拆箱就反过来
    装箱把数据从栈里移入了堆里,拆箱反过来
    装箱拆箱是非常消耗系统资源的,所以应该尽量避免,在.NET Framework 2.0里引入了泛型的概念,使用泛型可以很有效地避免装/拆箱
      

  3.   

    w_lion(狮子)可以讲一下ref的含义么
      

  4.   

    ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。
    我知道了 谢谢你们