Ich bin verwirrt über den Garbage Collection-Prozess für Objekte.
object A = new object();
object B = A;
B.Dispose();
Durch einen Dispose-Aufruf nur für die Variable B wird das erstellte Objekt nicht in den Müll geworfen. da das Objekt immer noch von A referenziert wird.
Funktioniert der folgende Code genauso wie der obige?
public static image Test1()
{
Bitmap A = new Bitmap();
return A;
}
Jetzt rufe ich diese statische Funktion von einer anderen Methode aus auf.
public void TestB()
{
Bitmap B = Test1();
B.Dispose();
}
Die statische Funktion Test1 gibt einen Verweis auf das Bitmap-Objekt zurück. Der Verweis wird gespeichert Die Referenz wird in einer anderen Variablen B gespeichert. Durch den Aufruf von Dispose für B wird die Verbindung zwischen B und dem Objekt unterbrochen, aber was geschieht mit der von Test1 übergebenen Referenz? Bleibt sie aktiv, bis der Anwendungsbereich der Funktion TestB beendet ist?
Gibt es eine Möglichkeit, die Referenz, die von der statischen Funktion übergeben wird, sofort zu entsorgen?