Это лучше всего иллюстрируется на примере. Imaging у нас есть класс Person
public Person(string name) : this(name, string.Empty)
{
}
public Person(string name, string address) : this(name, address, string.Empty)
{
}
public Person(string name, string address, string postcode)
{
this.Name = name;
this.Address = address;
this.Postcode = postcode;
}
Итак, здесь у нас есть конструктор, который устанавливает некоторые свойства и использует конструктор цепочки, чтобы позволить вам создать объект только с именем или только с именем и адресом. Если вы создаете экземпляр только с именем, это отправит значение по умолчанию, string.Empty, на имя и адрес, которое затем отправит значение по умолчанию для Postcode до конечного конструктора.
При этом вы уменьшаете объем написанного вами кода. На самом деле только один конструктор содержит код, вы не повторяете себя, поэтому, например, если вы меняете Name со свойства на внутреннее поле, вам нужно изменить только один конструктор - если вы установите это свойство во всех трех конструкторах это было бы три места, чтобы изменить это.