Для пояснения, да, вам нужно установить значения по умолчанию в конструкторе для объектов, производных от класса. Вам нужно убедиться, что конструктор существует с правильным модификатором доступа для конструкции, где он используется. Если объект не был создан, например, у него нет конструктора (например, статических методов), тогда значение по умолчанию может быть установлено полем. Причиной здесь является то, что сам объект будет создан только один раз, и вы не создадите его экземпляр.
@ Даррен Копп - хороший ответ, чистый и правильный. И, повторюсь, вы МОЖЕТЕ написать конструкторы для абстрактных методов. Вам просто нужно получить к ним доступ из базового класса при написании конструктора:
Конструктор в базовом классе:
public BaseClassAbstract()
{
this.PropertyName = "Default Name";
}
Конструктор в Производном / Бетоне / Подклассе:
public SubClass() : base() { }
Дело в том, что переменная экземпляра, извлеченная из базового класса, может похоронить имя вашего базового поля. Установка текущего значения экземпляра объекта с помощью «this». позволит вам правильно сформировать ваш объект относительно текущего экземпляра и требуемых уровней разрешений (модификаторов доступа), в которых вы его создаете.