= Nothing
Happens when a variable goes out of scope
Used for quicker Garbage Collecting and for program logic to check
e.g. you write a Division function because you do not want it to throw division by 0 errors. Instead, return Nothing, indicating the value is indeterminate
-or-
use obj=Nothing to free up memory for long running functions. If func() loads ten large bitmaps, gets data from them, then starts a recursive algorithm on the data that takes 90 seconds, you can set those bitmaps to Nothing to free up memory, which otherwise wouldn't happen for 90 seconds
Object.Dispose
Exposed by IDisposable
Used for Class that holds references to unmanaged data (i.e. file handle). These references can't be freed by the Garbage Collector ; .NET doesn't knows about them. When the Object is freed, the data remains referenced and will stay. You can no longer access your Class instance (it is Nothing), so it is impossible to know where the data is to free it. This causes Leaks.