Информация об изменениях

Сообщение Re: почему в C# до сих пор нет наследования конструкторов? от 02.12.2024 18:42

Изменено 02.12.2024 18:44 Qulac

Re: почему в C# до сих пор нет наследования конструкторов?
Здравствуйте, Codealot, Вы писали:

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>есть внятные объяснения?


Конкретизирую чей то ответ. Подкласс — это более специализированная версия базового класса и созданный унаследованным конструктором экземпляр подкласса, может оказать не валидным. Пример:

  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, то созданный экземпляр был бы не валидным .