I was wondering as to what happens to an object (in C#), once its reference becomes reassigned. Example:
Car c = new Car("Red Car");
c = new Car("Blue Car");
Since the reference was reused, does the garbage collector dispose / handle the 'Red Car' after it's lost its reference? Or does a separate method need to be implemented to dispose of the 'red car'?
I'm primarily wondering because there's a relatively large object that I'm going to recycle, and need to know if there is anything that should be done when it gets recreated.
In your example, the
Red Car
instance ofc
will become eligible for garbage collection whenc
is assigned toBlue Car
. You don't need to do anything.Check out this (old, but still relevant) MSDN article about the .NET garbage collector. http://msdn.microsoft.com/en-us/magazine/bb985010.aspx
The first paragraph says it all:
The garbage collector will handle cleanup for the red car when it is not longer rooted (not reachable). You, the developer, don't generally have to worry about cleaning up memory in .Net.
There are three caveats that need to be mentioned:
using
statement is a good way to accomplish this.If there are no other references to Red car, it will be collected by the GC on its next cycle. You don't need anything extra (unless it's a class that has streams etc. that need to be disposed)