title: Overloading c# variable
body: <p>I'm a little new to C# and I've achieved something where I'm confused why this has been allowed.</p>
  
  <pre><code>public interface IBase
  {
  }
  
  public interface ISub : IBase
  {
  }
  
  public class Thing
  {
      protected IBase provider;
  
      public Thing(IBase provider)
      {
          this.provider = provider;
      }
  }
  
  public class AnotherThing : Thing
  {
      protected ISub provider;
  
      public AnotherThing(ISub provider) : base(provider)
      {
          this.provider = provider;
      }
  }
  </code></pre>
  
  <p>I hope I'm just being dense, but I don't understand how I am allowed to override <code>provider</code> without causing some confusion to the compiler.</p>
  
  <p>The code does work.</p>