title: Reference to reference in C#?
body: <p>As we all know, C# classes object are treated as references, so what happens when you pass a reference object as a reference to a method? Say we have:</p>
  
  <pre><code>public class A { ... }
  </code></pre>
  
  <p>and then:</p>
  
  <pre><code>public void F(ref A a) { ... }
  </code></pre>
  
  <p>Does the compiler find out that <code>a</code> is already a reference type and keep it that way, or he creates a new reference to that object?</p>
  
  <p>And what if we have something like this:</p>
  
  <pre><code>public void F(ref A a)
  {
      F(ref a);
  }
  </code></pre>
  
  <p>In this code, besides the obvious <code>StackOverflowException</code>, does the compiler creates reference to reference ... to reference to <code>a</code> which is a reference object?</p>