title: Beginner to C#: How to do constructor chaining, overriding and using :this / :base?
body: <p>I've studied Java last year and I don't think I ever had issues with writing constructors. I'm unfortunately so confused at how overloading and chaining in C# works, or even the basic concept of it.</p>
  
  <p>I've seen :base get used in inheritence, but I'm not sure how.
  I've seen :this get used in many places, and it always boggles me why it's used.</p>
  
  <p>Here's an example of some code with :this (made public variables without setters/getters for sake of argument).</p>
  
  <pre><code>public class Person
  {
      public string firstName;
      public string lastName;
      public string height;
      public int age;
      public string colour;
  
  public Person():this("George", "Seville", "45cm", 10, "Black")
      {
      // This is the default constructor, and we're defining the default 
  values.
       }
  
  public Person(string firstName, string lastName, string height, int age, 
  string colour)
      {
          this.firstName = firstName;
          this.lastName = lastName;
          this.height = height;
          this.age = age;
          this.colour = colour;
      }
  
  }}
  </code></pre>
  
  <p>I can only understand how the first constructor is being used e.g. making a simple object of "Person" would give it the default values. That's as far as I can understand. This code is unfinished since it shows 2 default constructors. I'd like to be able to overload and chain for every variant available i.e. 1 parameter, 2 parameter... so they all overload and chain appropriately. </p>
  
  <p>So it should kind of (might not be right) look like this:</p>
  
  <pre><code>public Person():this("George", "Seville", "45cm", 10, "Black")
      {
      // This is the default constructor, and we're defining the default 
  values.
       }
  
  public Person(string firstName):this(firstName, "George", "Seville", "45cm", 
  10, Black)
      {
          this.firstName = firstName;
      }
  
  public Person(string firstName, string lastName):this(firstName, lastName, 
  "Seville", "45cm", 10, Black)
      {
          this.firstName = firstName;
          this.lastName = lastName;
      }
  </code></pre>
  
  <p>Of course I'm not sure if any of the code above makes sense, but I've seen some Classes with constructors with :this for each of them, and each constructor links to the one below it until the user can create an Object with any combination of parameters defined.</p>
  
  <p>As for :base, this completely confuses me. Here's an example I've actually found online:</p>
  
  <pre><code>    public class Circle:Shape
  {
      public Circle():this(Color.Black, new Point(0,0), 1)
      {
      }
  
      public Circle(Color Colour, Point Position, double Radius):base(Colour, 
  Position) 
      {
          this.Radius = Radius;
      }
  </code></pre>
  
  <p>I think :base refers to the parent class, but I'm not sure why and how. Also, why is :this being used in the first constructor and not :base?</p>
  
  <p>There are the 2 aspects I'm very confused with. Using :this and :base and understanding exactly how constructor chaining and overloading works. Please let me know if my question is too abstract. I've tried to be as specific as possible.</p>
  
  <p>Thank you all so much for your support and time. Much appreciated!</p>