title: Difference between base.i, this.i and object.i in C#
body: <p>There are two clarifications I need which I am trying to understand. </p>
  
  <p>I see that, I can access the variable "i" using "base" keyword as well as using the object. Is there any difference of it? I think, creation of object is memory consuming and hence we use base keyword itself to call base class members in derived class?</p>
  
  <p>When to use this.i and base .i and object.i?</p>
  
  <pre><code>class Program
  {
         public Program()
         {
             i = 20;
         }
      public readonly int i = 10;
  }
  
  class C : Program
  {
      public C() : base()
      {
          //base.i = 20;
      }
      public int i = 20;
      public void Display()
      {
          C c = new C();
          Console.WriteLine(base.i);//prints 20
          Console.WriteLine(c.i);//prints 20
          Console.WriteLine(this.i); //Also prints 20 :D
      }
      static void Main()
      {
          C c = new C();
          c.Display();
          Console.ReadLine();
      }
  </code></pre>
  
  <p>I tried to accept one answer as that helped me understand few things. But still, my question "the difference ans usage of 3 different styles at my context and in other contexts" is not clear. So please care to share your thoughts on this, I would appreciate it. I am sure there are millions like me who try to understand this :)</p>