title: (_) => DoWork(); How an underscore is valid as a anonymous delegate parameter?
body: <p>In an <a href="https://stackoverflow.com/a/5742915/24472">excellent answer about starting a timer immediately</a>, I could see the following code:</p>
  
  <pre><code>    timer.Elapsed += timer_Elapsed;
      ThreadPool.QueueUserWorkItem((_) =&gt; DoWork());
  ...
  
  void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) {
      DoWork();
  }
  
  void DoWork() {
      // etc...
  }
  </code></pre>
  
  <p>I tried it myself, and I bumped on this line, where I thought there was a typo in the anonymous delegate construction:</p>
  
  <pre><code>                                What?
                                    |
                                    V
      ThreadPool.QueueUserWorkItem((_) =&gt; DoWork());
  </code></pre>
  
  <p>Which hidden rule make a underscore "_" acceptable as a parameter name in an anonymous delegate?</p>