title: The call is ambiguous between the following methods or properties (one static and one non-static)
body: <p>Why am I not allowed to have a static and non-static methods with the same signature?</p>
  <p>Let's say I have a class like this</p>
  <pre><code>public class TestClass
  {
      public object thing { get; set; }
  
      public TestClass()
      {
  
      }
  
      public TestClass(object thing)
      {
          this.thing = thing;
      }
  
      public static TestClass ConvertTestClass(object thing)
      {
          return new TestClass(thing);
      }
  
      public TestClass ConvertTestClass(object thing)
      {
          this.thing = thing;
          return this;
      }
  
      
  }
  </code></pre>
  <p>and I try to use it like this</p>
  <pre><code>public class SomeOtherClass
  {
      public SomeOtherClass()
      {
          TestClass tc = TestClass.ConvertTestClass(new object());
  
          TestClass tc2 = new TestClass();
          tc2.ConvertTestClass(new object());
      }
  }
  </code></pre>
  <p>I get the following errors on <code>TestClass.ConvertTestClass(new object());</code></p>
  <blockquote>
  <p>The call is ambiguous between the following methods or properties: 'TestClass.ConvertTestClass(object)' and 'TestClass.ConvertTestClass(object)'</p>
  </blockquote>
  <p>and these errors on <code>tc2.ConvertTestClass(new object());</code></p>
  <blockquote>
  <p>The call is ambiguous between the following methods or properties: 'TestClass.ConvertTestClass(object)' and 'TestClass.ConvertTestClass(object)'</p>
  <p>Member 'TestClass.ConvertTestClass(object)' cannot be accessed with an instance reference; qualify it with a type name instead</p>
  </blockquote>
  <p>Can the compiler really not tell the difference between the static and non static versions of that method or am I missing something here?</p>
  <p>I am not using ReSharper (which seemed to be the root of a similar problem in other questions).</p>