值传递和引用传递02

  让我们再来看有关值传递和引用传递的例子:

            //值传递,传递的是这个值的本身
            int n = 10;
            int m = n;
            m = 40;
            Console.WriteLine(n);   // 10
            Console.WriteLine(m);   // 40
            //引用传递,传递的是对象的引用
            //p1 p2 共同指向了同一个堆上的地址
            //通过p2改变age,p1所指向的age也会跟着改变的
            Person p1 = new Person();
            p1.age = 20;
            Person p2 = p1;
            p2.age = 25;
            Console.WriteLine(p1.age);  //  25
            Console.WriteLine(p2.age);  //  25
            //字符串虽然属于引用类型,但由于它的不可变性
            //在改变s2所指向的内存后,s1所指向的内存不会跟着改变
            string s1 = "dssd";
            string s2 = s1;
            s2 = "rere";
            Console.WriteLine(s1); //   dssd
            Console.WriteLine(s2); //   rere
        
       字符串可以视为一个只读的字符数组,所以不能像int类型数组那样,通过下标来修改数组中元素的值
            //在参数前面加上ref修饰,传递的是参数的地址,值传递变成了引用传递
            int number = 10;
            Fun(ref number);
            Console.WriteLine(number);  //  20

        public static void Fun(ref int n) 
        {
            n += 10;
        }
原文地址:https://www.cnblogs.com/lcxBlog/p/4884772.html