Was passiert, wenn ich ein Datenelement durch Verweis auf eine Funktion übergebe, und während diese Funktion ausgeführt wird, startet der Garbage Collector und verschiebt das Objekt mit dem Datenelement in den Speicher?Weitergabe von Datenelementen per Referenz
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;
}
}
Wie stellt die CLR sicher, dass Referenzparameter während der Garbage Collection nicht ungültig werden? Sind sie genau wie Klassenreferenzen?
mögliche Duplikate von [C# -Parameter durch Verweis und .net Garbage Collection] (http://StackOverflow.com/Questions/2500851/c-sharp-Parameters-by-Reference-and-Netz-Garbage-Collection) –
Eric Lipperts Antwort auf die verbundene Frage von @rightfold beantwortet dies perfekt. –
Sie werden angepasst, weil jeder Methodenparameter als Wurzel betrachtet wird und alle Wurzeln angepasst werden (es heißt im Buch "CLR via C#") –