黑马程序员技术交流社区

标题: ref问题求解 [打印本页]

作者: weiwei10153    时间: 2014-2-26 22:31
标题: ref问题求解
本帖最后由 weiwei10153 于 2014-2-27 19:13 编辑

求高手指导一下 ,代码在下面
本人最近刚学基础知识
第一个我知道输出18,但第二个为什么输出20?
ref不就是修饰的是引用类型吗?为什么加了ref输出结果不一致?

class Program
{
        static void Main(string[] args)
        {
            Person p1 = new Person() { Age = 18 };
            Test1(p1);
            Console.WriteLine(p1.Age);           //18
            Test2(ref p1);
            Console.WriteLine(p1.Age);           //20    这个为什么是20 ?
            Console.ReadKey();
        }

        static void Test1(Person p)
        {
            p = new Person() { Age = 20 };
        }

        static void Test2(ref Person p)
        {
            p = new Person() { Age = 20 };
        }
}

class Person
{
      public int Age { get; set; }
}

明白了,多谢!

1.png (133.44 KB, 下载次数: 13)

1.png

作者: 回忆~坚    时间: 2014-2-27 18:23
ref传过去的是p1的地址,而非p1的值,所以经过Test2();之后也是在改p1这个地址里的值,所以p1的值也相应的变成了后面Test2();赋予的值




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2