首页 新闻 会员 周边

C#中 object 疑惑

0
悬赏园豆:5 [已解决问题] 解决于 2014-03-11 22:38
       static void Test(object obj)
        {
            obj = "1";
        }
        static void Main(string[] args)
        {
            object obj =2;
            Test(obj);
            Console.WriteLine(obj);
        }

结果出乎我的意料,求解释。。。

C#
木龙哥的主页 木龙哥 | 初学一级 | 园豆:144
提问于:2014-03-11 16:54
< >
分享
最佳答案
0

obj =2;

执行Test方法时

// 1.为参数分配,在栈中分配一个变量 obj,以免混淆,这个变量叫 obj1

2. 为参数赋值,object obj1=obj;引用类型传 引用,此时两个变量指向同一块内存"2"

3.给obj1 赋值,obj1="1",引用改变,指向另一块内存"1", 原来的 obj还是指向 "2";

 

 

收获园豆:5
Qlin | 老鸟四级 |园豆:2403 | 2014-03-11 17:12

object是引用类型,那么obj=obj1="1" 不是吗?

木龙哥 | 园豆:144 (初学一级) | 2014-03-11 17:18

@木龙哥: 

大哥,解释的怎么清楚还有问题。出现在,对内存的分配还不清楚。

obj=obj1;什么时候 这样 赋值了?

Qlin | 园豆:2403 (老鸟四级) | 2014-03-11 17:23
其他回答(2)
0

Test又没return,解释神马

iEvent | 园豆:529 (小虾三级) | 2014-03-11 17:11
0

你这个情况连装箱才箱问题都没接触到,你不理解的是指针概念,你需要了解的是指针,也就是信用

 

吴瑞祥 | 园豆:29449 (高人七级) | 2014-03-11 21:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册