码迷,mamicode.com
首页 > 其他好文 > 详细

对引用的误会-----一次出错引起的思考

时间:2015-01-29 08:08:38      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:

        static void Main(string[] args)
        {
            Student s1 = new Student();
            s1.age = 10;
            s1.name = "小A";

            ChageS(s1);
            Console.WriteLine("修改后年龄:{0}", s1.age);//猜一下结果是10 还是20呢

            Console.Read();
        }

        static void ChageS(Student s)
        {
            Student ss = new Student();
            ss.age=20;
            ss.name="小B";
            s = ss;//s对ss的实例引用了吗?
        }
    }
    class Student
    {
        public int age;
        public string name;
    }

对于上面的代码,我想当然的以为是结果是20,但事实上是10.

  实际上向函数ChageS传递是对象实例的引用,这个引用不会被修改,修改的只是引用所指向的实例的内容。在这个情况下,s = ss 操作不会让s指向ss指向的实例。这和指针的确是不一样的。如果想要完成这样的操作,需要加上 ref  。

对引用的误会-----一次出错引起的思考

标签:

原文地址:http://www.cnblogs.com/ddx-deng/p/4125945.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!