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关键字标明的实参要求在传递给方法前就初始化。
网友评论