如果通过引用某个函数传递数据成员,并且该函数正在运行时,会发生什么情况,垃圾收集器会开始运行并将包含该数据成员的对象移动到内存中?通过引用传递数据成员
class SomeClass
{
int someDataMember;
void someMethod()
{
SomeClass.someFunction(ref someDataMember);
}
static void someFunction(ref int i)
{
i = 42;
int[] dummy = new int[1234567890];
// suppose the Garbage Collector kicks in here
i = 97;
}
}
CLR如何确保参考参数在垃圾收集期间不会失效?它们是否像课程参考一样进行调整?
[C#参数引用和.net垃圾回收]的可能重复(http://stackoverflow.com/questions/2500851/c-sharp-parameters-by-reference-and-net-garbage-collection) – 2013-05-08 10:36:15
Eric Lippert对@ rightfold链接问题的回答完美地回答了这个问题。 – 2013-05-08 10:45:04
它们被调整,因为任何方法参数都被认为是一个根,并且所有的根都被调整(它在“CLR via C#”一书中说过) – 2013-05-08 10:49:53