Will the base class constructor be automatically called?
base-class, c#, constructor
Solution
This is simply how C# is going to work. The constructors for each type in the type hierarchy will be called in the order of Most Base -> Most Derived.
So in your particular instance, it calls `Person()`, and then `Customer()` in the constructor orders. The reason why you need to sometimes use the `base` constructor is when the constructors below the current type need additional parameters. For example:
public class Base
{
public int SomeNumber { get; set; }
public Base(int someNumber)
{
SomeNumber = someNumber;
}
}
public class AlwaysThreeDerived : Base
{
public AlwaysThreeDerived()
: base(3)
{
}
}
In order to construct an `AlwaysThreeDerived` object, it has a parameterless constructor. However, the `Base` type does not. So in order to create a parametersless constructor, you need to provide an argument to the base constuctor, which you can do with the `base` implementation.
Problem
``` class Person { public int age; public Person() { age = 1; } } class Customer : Person { public Customer() { age += 1; } } Customer customer = new Customer(); ``` Would the age of customer be 2? It seems like the base class's constructor will be called no matter what. If so, why do we need to call `base` at the end sometimes? ``` public Customer() : base() { ............. } ```