zoukankan      html  css  js  c++  java
  • C#值传递和按引用传递

    知识点:

           值类型和引用类型

           为值类型,,据

           对于引用类型来说,栈中存储的是堆中对象的地址


           值传递和引用传递

           对于值传递,传递的是栈中保存的数据

           对于引用传递。传递的是栈本身的地址


    先看一下值传递(传递值类型和引用类型)   

    class Program
    {
        static void Main(string[] args)
        {
            //引用类型的赋值。仅仅是赋值了对象在堆中的地址
            Person p = new Person();   //声明的一个Person类,包括有Name属性
            p.Name = "yzk";
            D2(p);
            Console.WriteLine(p.Name);   //返回值为jk
    
            //值类型的赋值,赋值了详细的值,而不是地址
            int n = 10;
            D1(n);
            Console.WriteLine(n);       //返回值为10
            Console.ReadKey();
        }
        //值类型的值传递
        static void D1(int m)
        {
            m = m + 1;
        }
        //引用类型的值传递
        static void D2(Person p1)
        {
            p1.Name = "jk";
        }
    }
    图解:


    再看一下引用传递(传递值类型和引用类型)   

    class Program
        {
            static void Main(string[] args)
            {
                Person p = new Person();   //声明的一个Person类,包括有Name属性
                p.Name = "jk";
                D2(ref p);      //引用传递:传递的是栈本身的地址
                Console.WriteLine(p.Name);   //返回值sk
    
                int n = 10;
                D1(ref n);       //引用传递:传递的是栈本身的地址
                Console.WriteLine(n);   //返回值11
                Console.ReadKey();
            }
            //值类型的引用传递
            static void D1(ref int a)  //ref就是表示引用传递
            {
                a = a + 1;
            }
            //引用类型的引用传递
            static void D2(ref Person per)
            {
                per = new Person();
                per.Name = "sk";
            }
        }
    图解



    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    316. 去除重复字母
    331. 验证二叉树的前序序列化
    225. 用队列实现栈
    197. 上升的温度
    178. 分数排名
    177. 第N高的薪水
    小程序导航
    css3、js动画特效
    背景透明css
    h5新标签IE8不兼容怎么办?
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4672831.html
Copyright © 2011-2022 走看看