title: Why do I get warning CS0108 about a property hiding a method from a base class
body: <p>Given the following classes the C# compiler gives me this warning:-</p>
  
  <p>CS0108 "'B.Example' hides inherited member 'A.Example(string)'. Use the new keyword if hiding was intended".</p>
  
  <pre><code>class A
  {
      public string Example(string something)
      {
          return something;
      }
  }
  
  class B : A
  {
      public string Example =&gt; "B";
  }
  </code></pre>
  
  <p>If use the classes running this code</p>
  
  <pre><code>class Program
  {
      static void Main(string[] args)
      {
          B b = new B();
          Console.WriteLine(b.Example("A"));
          Console.WriteLine(b.Example);
      }
  }
  </code></pre>
  
  <p>I get the following output</p>
  
  <pre><code>A
  B
  </code></pre>
  
  <p>Which is what I would expect.</p>
  
  <p>It doesn't seem to me that anything is being hidden at all. Indeed 
  if class B actually contains a simple method overload like this then I get no equivalent warning.</p>
  
  <pre><code>class B : A
  {
      public string Example(int another) =&gt; "B";
  }
  </code></pre>
  
  <p>Is there something special about a property that makes that compiler warning valid or is this a case of a false positive in the compiler?</p>