Използваш различни конструктури, когато искаш да създадеш даден обект с различни данни, които те интересуват. За пример ще използвам този клас кола:
class Car
{
private string ownerName;
private decimal price;
}
По подразбиране имаш празен конструктор:
public Car()
{
}
В такъв случай при създаването на нов обект Car с този конструктор, неговите полета ще останат с default-ните стойности. Но можеш и да имаш следното:
public Car(string ownerName) : this(ownerName, 0)
{
}
public Car(decimal price) : this("", price)
{
}
public Car(string ownerName, decimal price)
{
this.ownerName = ownerName;
this.price = price;
}
В зависимост от това кои данни те интересуват при създаването на обекта, ти можеш да подаваш различни параметри, а другите остават със стойности по подразбиране. Можеш да извикаш
Car first = new Car(); // ще има „“ за собственик и цена 0
Car second = new Car("Ivan Ivanov"); // собственик ще е Ivan Ivanov, цената ще е 0
Car third = new Car(15000);// собственик ще е „“, а цената ще е 15000
Car forth = new Car("Vasil Vasilev", 20000);// собственик ще е Vasil Vasilev,а цената ще е 20000
Извикването става чрез this и идеята му е да се пести код. Освен това във всеки конструктор можеш да добавяш още код.