Ответ 1
Если вы не объявляете какие-либо конструкторы для нестатического класса, компилятор предоставляет для вас открытый (или защищенный для абстрактных классов) конструктор без параметров. У вашего класса есть конструктор:
public TextStyle()
{
}
Это описано в разделе 10.11.4 спецификации С# 4:
Если класс не содержит деклараций конструктора экземпляра, автоматически создается конструктор экземпляра по умолчанию. Этот конструктор по умолчанию просто вызывает беззаметный конструктор прямого базового класса. Если у прямого базового класса нет доступного конструктора экземпляров без параметров, возникает ошибка времени компиляции. Если класс является абстрактным, то объявленная доступность для конструктора по умолчанию -
protected
. В противном случае объявленная доступность для конструктора по умолчанию -public
.
Единственными классами в С#, которые не имеют каких-либо конструкторов экземпляров, являются статические классы, и они не могут иметь конструкторы.