在C#中,没有取地址&的概念,你不能像在C或C++中那样使用取址操作符(&)来获取一个变量的内存地址,而是需要采用out与ref
什么是out,什么又是ref呢
我们直接用例子来讲解
1.out的用法
定义一个这样的函数
void test(out int a,out int b)
{
a = 10;
b = 20;
}
在主函数中进行调用
int a=1,b=2;
test(out a,out b);
结果:
a=10
b=20
2.ref的用法
同样先定义了一个函数
void test(ref int a, ref int b)
{
a = 30;
b = 40;
}
并在主函数中调用
int a=1,b=2;
test(ref a,ref b);
结果:
a=30
b=40
由此可见,ref和out都是址传递,执行方法后,原来的值会改变,但是二者还是存在着一定的区别
1.使用ref时,传入参数必须要初始化,而使用out时参数可以不初始化
2.ref的参数可以不赋值,但是out参数必须要赋值