如果通過引用某個函數傳遞數據成員,並且該函數正在運行時,會發生什麼情況,垃圾收集器會開始運行並將包含該數據成員的對象移動到內存中?通過引用傳遞數據成員
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