在阅读关于ref关键字的MSDN文章后,我对使用ref关键字传递值类型时C#的作用感到困惑.文档指出ValueTypes没有装箱.我的问题是C#如何处理传递值类型作为引用?它是否将一些副本传递给堆栈上分配的数据?谢谢.
它是否将一些副本传递给堆栈上分配的数据?
不,它不会复制.ref和out关键字可相比于由指针用C传递或通过引用C++传递,当存储位置的变量(即,地址)被传递到目标方法.然后,接受引用的方法将使用传入的内存位置直接修改该值.
知道变量是通过引用传递的,编译器会插入将ref变量视为地址的指令,从而允许就地修改.