Сообщение Re: почему в C# до сих пор нет наследования конструкторов? от 02.12.2024 18:42
Изменено 02.12.2024 18:44 Qulac
Re: почему в C# до сих пор нет наследования конструкторов?
Здравствуйте, Codealot, Вы писали:
C>есть внятные объяснения?
Конкретизирую чей то ответ. Подкласс — это более специализированная версия базового класса и созданный унаследованным конструктором экземпляр подкласса, может оказать не валидным. Пример:
Если бы класс Class2 мог бы вызвать конструктор класса Class1, то созданный экземпляр будет не валидным.
C>есть внятные объяснения?
Конкретизирую чей то ответ. Подкласс — это более специализированная версия базового класса и созданный унаследованным конструктором экземпляр подкласса, может оказать не валидным. Пример:
public class Class1
{
private string _property;
//любой string
public string Property
{
get { return _property; }
}
public Class1(string property)
{
_property = property;
}
}
public class Class2 : Class1
{
public Class2(string property) : base(property)
{
//теперь только string не равный null
if (property == null)
{
throw new ArgumentNullException(nameof(property));
}
}
}
Если бы класс Class2 мог бы вызвать конструктор класса Class1, то созданный экземпляр будет не валидным.
Re: почему в C# до сих пор нет наследования конструкторов?
Здравствуйте, Codealot, Вы писали:
C>есть внятные объяснения?
Конкретизирую чей то ответ. Подкласс — это более специализированная версия базового класса и созданный унаследованным конструктором экземпляр подкласса, может оказать не валидным. Пример:
Если бы экземпляр класса Class2 мог бы создаваться вызовом конструктора класса Class1, то созданный экземпляр был бы не валидным .
C>есть внятные объяснения?
Конкретизирую чей то ответ. Подкласс — это более специализированная версия базового класса и созданный унаследованным конструктором экземпляр подкласса, может оказать не валидным. Пример:
public class Class1
{
private string _property;
//любой string
public string Property
{
get { return _property; }
}
public Class1(string property)
{
_property = property;
}
}
public class Class2 : Class1
{
public Class2(string property) : base(property)
{
//теперь только string не равный null
if (property == null)
{
throw new ArgumentNullException(nameof(property));
}
}
}
Если бы экземпляр класса Class2 мог бы создаваться вызовом конструктора класса Class1, то созданный экземпляр был бы не валидным .