Каждый конструктор в классе .NET гарантирует, что конструктор в классе, от которого он наследуется, также вызывается.
Так что, если у вас есть следующие классы:
public class Base { }
public class Something : Base { }
public class Else : Something { }
тогда конструктор в Else вызовет конструктор в Something, который также вызовет конструктор в Base.
Конструктор, вызываемый в базовом классе (т. Е. Тот, от которого вы спускаетесь), всегда является конструктором без параметров.
Если у вас его нет или вы хотите его переопределить, вы можете переопределить его, указав base (некоторые параметры здесь). Это выберет правильный конструктор в базовом классе.
Вы также можете попросить конструктора сначала вызвать другой конструктор в том же классе, на том же уровне. Это можно использовать, чтобы избежать дублирования кода конструктора в нескольких конструкторах. В конечном счете, вызываемые конструкторы будут вызывать конструктор в базовом классе.
Надеюсь, это было понятно.