C# ref和out参数

1.ref参数:在方法内为变量重新赋值之后,方法结束依然有效

      private static void refDemo()
        {
            int n1 = 1;
            int n2 = 2;
            //在方法内为变量重新赋值之后,方法结束依然有效
            //refParaDemo(ref n1, ref n2);
            refParaDemo2(n1, n2);  //方法结束,值不改变
            Console.WriteLine("n1:" + n1 + "\r\n" + "n2:" + n2);
            Console.ReadLine();
        }


        public static void refParaDemo2(int a, int b)
        {

            int temp;
            temp = a;
            a = b;
            b = temp;
        }

        //ref参数的测试:
        #region 高级参数ref用法
        public static void refParaDemo(ref int a, ref int b)
        {
            //ref参数,用于将方法内的变量改变后带出方法外
            int temp;
            temp = a;
            a = b;
            b = temp;
        }
        #endregion

2.out参数:为变量重新赋值并返回(跟上面的区别就是不需要变量先初始化)

 public static void testOutPara( out string msg1)
 {        
                msg1 = "直接测试out参数";                  
  }
//测试方法:
string msg1 = "zhende";
testOutPara(out  msg1);
Console.WriteLine(msg1);

总结:两个参数用法效果都是一样的,区别在于
ref要求参数在使用之前要显式初始化,out要在方法内部初始化;
首先:两者都是按地址传递的,使用后都将改变原来参数的数值。
其次:ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。ref是有进有出,out是只出不进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值