使用ref关键字传递值

won*_*yte 5 c# parameters ref

在阅读关于ref关键字的MSDN文章后,我对使用ref关键字传递值类型时C#的作用感到困惑.文档指出ValueTypes没有装箱.我的问题是C#如何处理传递值类型作为引用?它是否将一些副本传递给堆栈上分配的数据?谢谢.

das*_*ght 8

它是否将一些副本传递给堆栈上分配的数据?

不,它不会复制.refout关键字可相比于由指针用C传递或通过引用C++传递,当存储位置的变量(即,地址)被传递到目标方法.然后,接受引用的方法将使用传入的内存位置直接修改该值.

知道变量是通过引用传递的,编译器会插入将ref变量视为地址的指令,从而允许就地修改.