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";
            }
        }
    图解



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

  • 相关阅读:
    算法:拓扑排序
    【欧拉计划2】Even Fibonacci numbers
    机房收费系统之模版方法使用
    VC运行时库
    数据库学习(6)——基本查询操作
    Attribute与Property的区别
    记C++类成员访问权限符二三事
    大年初五去颐和园
    2013年第6周六农历除夕下午
    大年初四晚上睡前
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4672831.html
Copyright © 2011-2022 走看看