title: "delegate {}" matches "Func<int,int,..>"?
body: <p>I was reading Jon Skeet's answer <a href="https://stackoverflow.com/a/299858/859154">here</a></p>
  
  <p>and one of his samples was : </p>
  
  <pre><code>  static void Main()
      {
          int x = 0;
          Foo( delegate { return x; } );
      }
  
      static void Foo(Func&lt;int, int&gt; action)
      {
          Console.WriteLine("I suspect the anonymous method...");
      }
  </code></pre>
  
  <p>But how <code>Foo(Func&lt;int, int&gt;)</code> can deal with <code>delegate { return x; }</code> which is <code>Func&lt;int&gt;</code> ?</p>
  
  <p>As a matter of fact also <code>Func&lt; int,int,int,int,...&gt;</code> can deal with <code>delegate { return x; }</code> ...</p>
  
  <p><strong>question 1</strong>
  Any explanation for this behavior please ?</p>
  
  <p><strong>question 2</strong></p>
  
  <p>I have this code : </p>
  
  <pre><code>class MyClass
  {
      public delegate void MyEventHandler(object sender);
      public  event MyEventHandler MyEvent;
  }
  </code></pre>
  
  <p>and I wanted to use generic handlers so : </p>
  
  <pre><code>class MyClass
  {
      public  Action&lt;object&gt; MyEventHandler;
      public  event MyEventHandler MyEvent;
  }
  </code></pre>
  
  <p>but I get this error :</p>
  
  <blockquote>
    <p>'UserQuery.MyClass.MyEventHandler(object)' is a 'method' but is used like a 'type'</p>
  </blockquote>
  
  <p>Why isn't it recognizing it ?</p>