title: Is it possible to overload Func<T, TResult> and Func<T1, T2, TResult> having the same name?
body: <p>First of all, I know I can just define two overloaded helper methods to do what I need (or even just define two Func&lt;>s with different names), but these are only used by one public method, so I'm exploring ways to define two local Func&lt;>s that also overload by using the same name. Take, for example:</p>
  
  <pre><code>string DisplayValue(int value)
  { return DisplayValue(value, val =&gt; val.ToString()); }
  
  string DisplayValue(int value, Func&lt;int, string&gt; formatter)
  { return (value &lt; 0) ? "N/A" : formatter(value); }
  </code></pre>
  
  <p>I need to call one or the other version many times in my public method to custom format special values, so I thought I could "translate" the above into something like this:</p>
  
  <pre><code>Func&lt;int, Func&lt;int, string&gt;, string&gt; displayValue =
      (value, formatter) =&gt; (value &lt; 0) ? "N/A" : formatter(value);
  
  Func&lt;int, string&gt; displayValue =
      value =&gt; displayValue(value, val =&gt; val.ToString());
  </code></pre>
  
  <p>Even as I was typing it I knew I couldn't declare two delegate identifiers having the same name, even if they are different types. This is more academic than me being dead set on achieving overloads using Func&lt;>s, but I guess they just can't do everything, right?</p>
  
  <p>And I guess you can't do something like this, either:</p>
  
  <pre><code>Func&lt;string, params object[], string&gt; formatArgs =
      (format, args) =&gt; string.Format(format, args);
  </code></pre>