如果我通过引用函数传递数据成员,并且在该函数运行时,垃圾收集器开始运行并将包含该数据成员的对象移动到内存中,会发生什么情况?
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 如何确保引用参数在垃圾收集期间不会变得无效?它们是否像类引用一样进行了调整?