title: Why must a lambda expression be cast when supplied as a plain Delegate parameter
body: <p>Take the method System.Windows.Forms.Control.Invoke(Delegate method)</p>
  
  <p>Why does this give a compile time error:</p>
  
  <pre><code>string str = "woop";
  Invoke(() =&gt; this.Text = str);
  // Error: Cannot convert lambda expression to type 'System.Delegate'
  // because it is not a delegate type
  </code></pre>
  
  <p>Yet this works fine:</p>
  
  <pre><code>string str = "woop";
  Invoke((Action)(() =&gt; this.Text = str));
  </code></pre>
  
  <p>When the method expects a plain Delegate?</p>