title: Does the "using" keyword mean the object is disposed and GC'ed?
body: <p>I struck up a conversation with my colleague today, who said she'd just learned the reason behind using the <code>using</code> statement.</p>
  
  <pre><code> //Using keyword is used to clean up resources that require disposal (IDisposable interface). 
  
   using (StreamReader reader = new StreamReader(@"C:\test.txt")) 
   { 
   string line = reader.ReadLine(); 
   } 
  </code></pre>
  
  <p>I pointed out that the object is marked as "Can be disposed" but not actually disposed and garbage-collected unless GC decides to do so.</p>
  
  <p>She responded that the object will be disposed automatically once that using statement ends because the using statement is translated to try-catch-finally block. So, the object must get disposed at the very end of the using statement.</p>
  
  <p>I was confused by this, because I know that using a <code>using</code> statement does not guarantee that the object gets GC-collected. All that happens is that the <code>Dispose()</code> method would be called. The GC decides when to GC it regardless. But when she asked for proof, I could not find any.</p>
  
  <p>Does anyone know how this works, and how to prove it?</p>