Skąd mogę wiedzieć, czy obiekt został zebrany śmieci, czy nie?Jak określić, czy obiekt został zgubiony
8
A
Odpowiedz
24
Według this:
Normalnie nie mogę powiedzieć, czy obiekt został śmieci zbierane przy użyciu niektórych odwołanie do obiektu, bo skoro masz odniesienie do obiektu, to nie będą zbierane śmieci .
Zamiast tego można utworzyć słabe odniesienie do obiektu za pomocą obiektu WeakReference. Słabe odniesienie to takie, które nie zostanie policzone jako odniesienie dla celów zbierania śmieci.
W kodzie poniżej sprawdzamy przed i po zbieraniu śmieci, aby pokazać, że obiekt Dog jest zbiorem śmieci.
Dog dog = new Dog("Bowser");
WeakReference dogRef = new WeakReference(dog);
Console.WriteLine(dogRef.IsAlive);
dog = null;
GC.Collect();
Console.WriteLine(dogRef.IsAlive);
do 'duplikat' pytanie nie jest bardzo specyficzny, więc ponownie. To zadaje konkretne pytanie i ma konkretną odpowiedź. – leppie