Как вы определяете конструктор по умолчанию?

#c# #oop

#c# #ооп

Вопрос:

Я новичок в ООП.

Я прочитал, что «конструктор, который не принимает аргументов, называется конструктором по умолчанию».

Является ли приведенный ниже конструктор конструктором по умолчанию?

 Class A
{
  int a;
  string b;

  public A()
  {
    a=10;
    b="Test";
  }
}
  

Комментарии:

1. ДА.

Ответ №1:

Да, это так, поскольку у него нет никаких параметров / аргументов.

Примером конструктора, отличного от конструктора по умолчанию, может быть:

 public A(int a)
{
   this.a = a;
}
  

Комментарии:

1. Спасибо a lot…So необязательно, чтобы конструктор по умолчанию устанавливал членам значения по умолчанию (a = 0 и b = null)?

2. @Alvin: Да, это правильно. Как упоминают другие, конструктор называется конструктором «по умолчанию» только потому, что компилятор по умолчанию вставит пустой конструктор без параметров, если в вашем коде нет конструкторов, явно написанных.

3. Нет, не обязательно, чтобы вы устанавливали переменные вашего экземпляра в конструкторе по умолчанию, но это хорошая практика для этого. Я рекомендую вам всегда устанавливать переменные вашего экземпляра в конструкторе, если только вы не собираетесь использовать отложенную инициализацию в свойстве или что-то еще.

4. @Kevin: Когда вы говорите «установите переменные вашего экземпляра», вы имеете в виду их значения по умолчанию (0, null и т.д.) Или значения, отличные от значений по умолчанию?

5. @Zach Они просто говорят, что хорошей практикой является установка переменных на что-то. Вам не нужно устанавливать для них значения типов по умолчанию.

Ответ №2:

Ответ №3:

Если вы ссылаетесь на спецификацию C # 4:

10.11.4 Конструкторы по умолчанию Если класс не содержит объявлений конструктора экземпляра, автоматически предоставляется конструктор экземпляра по умолчанию. Этот конструктор по умолчанию просто вызывает конструктор без параметров базового класса direct.

и для типов значений:

4.1.2 Конструкторы по умолчанию Все типы значений неявно объявляют общедоступный конструктор экземпляра без параметров, называемый конструктором по умолчанию. Конструктор по умолчанию возвращает экземпляр с нулевой инициализацией, известный как значение по умолчанию для типа значения

Ответ №4:

Да, это общедоступный конструктор по умолчанию в C # (и Java). Если вы явно не объявите его, компилятор создаст для вас пустой конструктор по умолчанию. Однако, если вы объявите конструктор с параметрами, но не конструктор по умолчанию (без параметров), то компилятор не будет автоматически генерировать для вас конструктор по умолчанию.

Ответ №5:

Нет, это не конструктор по умолчанию. Конструктор по умолчанию — это тот, который вызывается автоматически при создании экземпляра класса, у которого нет определения конструктора. Как только вы определяете конструктор с нулевыми аргументами, вы переопределяете конструктор по умолчанию своим пользовательским конструктором. И это то, что вы делаете выше.

Чтобы понять это, удалите свой конструктор и установите значения переменных класса a и b равными 10 и «pankaj» соответственно.

А затем создайте экземпляр класса A defaultConst = new A(); и получите доступ к значениям для a и b.

Комментарии:

1. Конструктор без параметров по-прежнему обычно называется конструктором по умолчанию, даже если вы переопределяете автоматически созданный.

2. @Pankaj: Спасибо!! Теперь я получил a и b равными 10, а «pankaj» означает, что конструктор по умолчанию установил значения элементов, которые я установил, а не a = 0 или b = null. В конечном счете, я хочу сказать, что я нашел в типах конструкторов — default, parameterized, private, static….so переопределенный выше должен находиться в категории DEFAULT? (ничто не вызывается как пользовательский конструктор)

3. @BitOff : Вы можете проверить исходные тексты и сами понять, что это значит, когда мы используем слово «По умолчанию». То, что я ответил, является наиболее правильным из всех приведенных выше ответов

4. @Alvin, да, вы можете назвать это пользовательским конструктором по умолчанию, но не конструктором по умолчанию.