title: Managed vs Unmanaged Resources in .NET. What's the difference?
body: <p>I was reading <a href="http://www.wrox.com/WileyCDA/WroxTitle/Professional-C-4-0-and-NET-4.productCd-0470502258.html" rel="nofollow">Wrox's Professional C# 4 and .NET 4</a> chapter on "Memory Management and Pointers", specifically about how Garbage Collection works in .NET.  It said the reason that "the garbage collector does not know how to free unmanaged resources (such as file handles, network connections, and database connections)", which is why such classes should either declare a <em>destructor</em> (aka "finalizer") or implement <code>IDisposable</code>.</p>
  
  <p>It seems like all these examples of "unmanaged resources" are related to interaction with a system that is extrinsic from the application and independent of the .NET Framework.  However, I'm not sure if that is the complete distinction that is being made, so,</p>
  
  <h2>What exactly is the distinctive characteristic that an unmanaged resource has and a managed resource doesn't have?</h2>