Revise C#'s Constructor Overloading

When overloading constructor in C# I always tends to forgot what is the execution cycle during runtime. So I made a quick program with LinqPad to refresh my mind.

1st I create a simple class Item with multiple constructor overloading each others.

class Item {

private int i = 1;

public Item(){
this.i = i*10;
Console.WriteLine("Item - constructor 1 executed. i = "+ this.i);
}

public Item(int i) : this(){
this.i *= i;
Console.WriteLine("Item - constructor 2 executed. i = "+ this.i);
}

public Item(string a) : this(5){
Console.WriteLine("Item - constructor 3 executed. i = "+ this.i);
}
}

then I create a Main function to create new Item.

// Constructor Overloading
void Main()
{
Console.WriteLine("START");
Console.WriteLine("--------------");

var i = new Item();
Console.WriteLine("--------------");

var i2 = new Item(2);
Console.WriteLine("--------------");

var i3 = new Item("Hello");

Console.WriteLine("--------------");
Console.WriteLine("END");
}

When the program runs it will produce the following output:
START
--------------
Item - constructor 1 executed. i = 10
--------------
Item - constructor 1 executed. i = 10
Item - constructor 2 executed. i = 20
--------------
Item - constructor 1 executed. i = 10
Item - constructor 2 executed. i = 50
Item - constructor 3 executed. i = 50
--------------
END

Seeing the output quickly understand how the flow of execution.

Comments