title: Delegates act as value types
body: <p>I have just discovered one strange thing:</p>
  
  <pre><code>Action a1 = () =&gt; Console.Write("1 ");
  Action a2 = () =&gt; Console.Write("2 ");
  Action tmp = a1;
  a1 += a2;
  a2 = tmp;
  Console.Write("a1:\t");
  a1();   //a1:  1 2
  Console.Write("\na2:\t");
  a2();   //a2:  1
  Console.ReadLine();
  </code></pre>
  
  <p>I expected both statements to return "1 2";
  Why it isn't so?</p>