title: Type inference for type arguments of generic methods
body: <p>I'm a newby to Stack Overflow so please go easy on me!  I'm reading C# in Depth but I've come across a scenario that I don't believe is covered.  A quick search of the web didn't throw up any results either.</p>
  
  <p>Say I define the following overloaded methods:</p>
  
  <pre><code>void AreEqual&lt;T&gt;(T expected, T actual)
  
  void AreEqual(object expected, object actual)
  </code></pre>
  
  <p>If I call <code>AreEqual()</code> without specifying a type argument:</p>
  
  <pre><code>AreEqual("Hello", "Hello")
  </code></pre>
  
  <p>Is the generic or non-generic version of the method invoked?  Is the generic method invoked with the type argument being inferred, or is the non-generic method invoked with the method arguments being implicitly cast to <code>System.Object</code>?</p>
  
  <p>I hope my question is clear.  Thanks in advance for any advice.</p>