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

值传递与引用传递

时间:2015-05-10 22:18:54      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

int、char、bool等类型的变量与类类型的变量(如string)

前者占据的内存空间很小,后者占据的内存空间较大。

前者采用值传递,就是将变量的值复制一份传递给另一个变量;

如果后者也采用值传递,那么内存将很快被消耗殆尽,所以采用的是引用传递,传递的是内存地址,于是就会出现多个变量指向同一块内存的情形。             

    class Program
    {
        static void SetPersonAge(Person p,int age)
        {
            p._Age = age;
        }

        static void Main(string[] args)
        {
            int i = 10;
            int j = i++;//先把i的值复制一份赋给j,然后i的值再自增
            int k = j;
            j *= 2;
            Console.WriteLine("i = {0},j = {1},k = {2}",i,j,k);  

    //输出结果  i = 11,j = 20,k = 10

            Person p1 = new Person(20);
            Person p2 = p1; //p2与p1指向了同一块内存
            p1._Age++; //p1对内存中的变量进行操作后,通过p2取出变量的值,变量的值当然会发生改变
            Console.WriteLine("p1._Age = {0},p2._Age = {1},", p1._Age, p2._Age);

    //输出:p1._Age = 21,p2._Age = 21

            SetPersonAge(p2, 30);//通过函数来传递的情形也是相同的
            Console.WriteLine("After Setage.");
            Console.WriteLine("p1._Age = {0},p2._Age = {1},", p1._Age, p2._Age);
    //输出:p1._Age = 30,p2._Age = 30

        }

        public class Person
        {
            public int _Age;
            public Person(int age)
            {
                _Age = age;
            }
        }
    }

值传递与引用传递

标签:

原文地址:http://www.cnblogs.com/lcxBlog/p/4493080.html

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