#734 – Accessing the Original Object Referenced through a WeakReference
December 12, 2012 Leave a comment
You can create a WeakReference instance that refers to an object and then use the WeakReference to determine whether the object has been garbage collected.
You can also refer back to the original object referenced by the WeakReference using its Target property.
Dog dog = new Dog("Bowser"); WeakReference dogRef = new WeakReference(dog); Dog origDog = (Dog)dogRef.Target;
When you refer to the original object in this way, you add a reference to it, which means that it won’t get garbage collected.
Dog dog = new Dog("Bowser"); WeakReference dogRef = new WeakReference(dog); Dog origDog = (Dog)dogRef.Target; dog = null; GC.Collect(); // Bowser still alive at this point, since we still have // a reference to him. Console.WriteLine(string.Format("Object still alive: {0}", dogRef.IsAlive));