ref 的存在是为了传地址。就是c的指针。所以值参数加上ref就能 在函数中改变原来得值变量。
一般的引用变量就是加不加ref都无所谓。但是当调用函数中有new就不一样了。
传指针的原理是,你传的是地址,然后在函数里面操作那个地址指向的内容的值,所以修改后,结果保留。
但是如果不加ref,传过去的引用跟值类型一样,被new之后指向新的地址为某一值的一块地址,如果是值传递一样,函数里面其实操作的是引用中存储的地址,所以new操作对原来的引用变量无效。
加ref 相当于引用的引用,地址的地址,new后指向新的地址空间,原来的内存泄漏。ref 相当于&
ref就相当于C++里面的指针
int a = 0;
int Add(int p)
{
return p + 1;
}
Add(a) ; //a还是0
int Add(ref int p)
{
return p + 1;
}
Add(ref a); //a变成1
首先你要知道引用是什么意思,引用就是应用地址,当修改地址里面的值得时候,你说会不会修改它的具体实参值呢。。
这就类似于C里面的指针的。就是这样的一个过程的。