使用ref和out参数

1.交换两个数的值

static void swap(int x,int y){

    int temp = x;

    x = y;

    y = temp;

}

static void main(){

    int x = 42;

    int y = 6;

    swap(x,y);

    Console.WriteLine($"x is {x} ,y is {y}");

}

运行后,发现x,y的值并没有改变,为什么?

2.形参和实参

实参:调用方法的参数,如下的x,y

int x = 42;

int y = 6;

swap(x,y);

形参:是接受实参的一方,如下的x,y

static void swap(int x,int y){

}

向方法传递实参时,对应的参数(形参)通常会用实参的拷贝来初始化——不管参数是值类型,可空类型,还是引用类型。

以上例子如果想实现交换的功能,可以使用ref关键字。

static void swap(ref int x,ref int y){

int temp = x;

x = y;

y = temp;

}

static void main(){

int x = 42;

int y = 6;

swap(ref x,ref y);

Console.WriteLine($"x is {x} ,y is {y}");

}

注意观察,会发现,修改了两个地方:

1)方法参数添加了ref关键字

2)调用方法时,传递参数,也要添加ref关键字

那ref的作用是什么?

3.ref的作用

添加了ref前缀,C#编译器将生成代码传递对实参的引用,而不是传递实参的拷贝。

4.out

out的作用和ref相同,使用也一样。所不同的是,out要求,实参的初始化在方法中实现;而ref关键字标明的实参要求在传递给方法前就初始化。

你可能感兴趣的:(使用ref和out参数)