打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
V6.5引用传递 ref/out/params

using System;

using System.Collections.Generic;

using System.Text;

namespace V6._引用传递ref

{

    class Person {

        private string name;

        public string Name {

            get {  return   name; }

            set { name = value; }

        }

    }

    class Program

    {

        //值类型赋值的时候将栈中的数据拷贝了一个副本

        // 引用传递时传递堆本身的地址

        static void Main(string[] args)

        {

            //ref  

            int n = 100;

            Ml(ref n);

            Console.WriteLine(n);   //101

            Person p1=new Person ();

            p1.Name ="黄";

            M2(ref p1);

            Console.WriteLine(p1.Name);

            //out 传递的是栈的地址

            int m ;

            int n;

            TestOut(out m, out n);

            Console.WriteLine(m);

            //params

            Console.ReadKey();

        }

        //ref    传递的是栈的地址

        static void Ml(ref  int n) {

            n = n + 1;

        }

       static void M2(ref Person   p2) {

           // ref Person           p2 引用传递不会对栈开辟一个变量 共用一个地址 0xx01   p1 p2 公用同一个栈 

           // p2=new Person ();   创建一个新的对象 在堆开辟一个空间 地址 0xx02          p1 p2 因公用同一个栈, p2指定修改后 p1也跟着修改 

           p2=new Person ();

           p2.Name ="金";

        }

        //out 让函数可以输出多个值 

        //1 out参数的变量在传递之前不需要赋值,即使赋值了也不能在方法中使用

        //2. 在方法中必须为 out参数值

        static void TestOut(out int m,out int n)

        {

            m = 100;

            n = 99;

        }

        //params 可变参数 

        //1.如果方法有多个参数,可变参数必须作为最后一个参数

        //2.可变参数可以传递参数也可以不传递参数,如果不传递参数,则args数组为一个长度为0的数组

        //3.可变参数可以直接传递一个数组进来

        static void TestParams(string msg, params int[] args)

        {

            if (args != null)

            {

            }

        }

    }

}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C#中方法的参数
C# 参考之方法参数关键字:params、ref及out 引用 - 空白画映 - 博客园
C#方法的参数关键字:ref、out、params
如何学习C#语言-学习技巧 - - C#学习,如何学习,c#语言,编程开发,.net,影子...
C#:ref和out的联系及区别。
从栈和堆中来看值传递和引用传递
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服