14.ref参数

什么是ref?

ref关键字指示按引用传递的值,而非按值传递。

如何做?

如图,这是一个参数没被ref修饰的的交换两个int类型变量值的方法,通过结果可以明显的看出并没有交换成功。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo {


    class Program {
        static void Main(string[] args) {
            //ref参数要求在方法外必须为其赋值,而方法内可以不赋值。
            int n1 =10;
            int n2=20;
            Test(ref n1,ref n2);

            Console.WriteLine(n1);
            Console.WriteLine(n2);           
            Console.ReadKey();
           
        }

        public static void Test(ref int n1, ref int n2) {
            //ref参数要求在方法外必须为其赋值,而方法内可以不赋值。
            int temp = n1;
            n1 = n2;
            n2 = temp;
        }
        
    }
}

运行结果:

上例代码,可以看出,在被ref修饰后,两个int类型的变量的值交换成功了。

使用:
在方法上用ref修饰形参,如:

public static void Test(ref int n1, ref int n2) {
     //ref参数要求在方法外必须为其赋值,而方法内可以不赋值。
     int temp = n1;
     n1 = n2;
     n2 = temp;
}

在外部调用方法时,修饰实参,如:

Test(ref n1,ref n2);
原文地址:https://www.cnblogs.com/lz32158/p/12824426.html