【发布时间】:2016-04-19 23:14:22
【问题描述】:
I know what passing by ref is and what it means,但是 ref 传递的对象到底发生了什么?是否保证在使用引用时对象保持在内存中的当前位置?
变量是否是局部变量有区别吗?
我最感兴趣的是内存中发生的事情。
一些背景信息: 我编写了一个简单的测试程序,它存储 ref 传递的对象的内存地址,并注意到 C# 喜欢在内存中移动对象。但我认为奇怪的是,所使用的对象是函数的局部变量。这自动让我认为对象的引用不能在内存中移动,因为它在堆栈上。但显然我错过了一些东西。使用 ref 时我收到了什么样的内存?
【问题讨论】:
-
Jon Skeet 可以(并且可能已经)就这个主题写了一两章。
-
@BrianDriscoll Jon Skeet 在 .NET 团队首次编写后对其进行了纠正。 ;)
-
“我对内存中发生的事情最感兴趣。” -> 这是您所在的任何运行时(技术上是 Virtual Execution System)的实现细节。
标签: c#