我正在通过 C# 阅读 Jeffrey Richters CLR,在其中他说使用 ref 参数引用本身是按值传递的。这对我来说很有意义,并且似乎类似于指针。
即在C语言中,如果我将一个指针传递给一个函数,然后通过malloc分配指针,它会将指针更改为指向新的内存位置,但是我知道由于指针本身是一个副本,它不会重新分配原来的指针传入函数。为了完成对函数外部指针的更改,我必须使用双指针。
但是,在 C# 中:
void Swap(ref Object a, ref Object b)
{
Object t = b;
b = a;
a =t ;
}
作品。这向我表明引用不是按价值计算的。与上面的 malloc 类似,我假设我可以通过引用传递一个对象并为其分配一个新对象,并且重新分配将在函数之外持续存在。
有人可以解决我的困惑吗?