Подтвердить что ты не робот

Пустой конструктор или конструктор

Я думаю, что не обязательно иметь конструктор по умолчанию в классе (С#).

Итак, в этой ситуации у меня должен быть пустой конструктор в классе или я могу его пропустить?

Лучше ли иметь пустой конструктор по умолчанию?

Class test
{
   public test()
   {

   }
        ......
}

или

Class test
{
        ......
}
4b9b3361

Ответ 1

Если класс не будет использоваться третьими лицами и вам не нужен перегруженный конструктор, не пишите пустой конструктор.

Но...

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

Теперь, при этом, компилятор С# больше не генерирует конструктор по умолчанию. Если вы не добавите пустой конструктор в явном виде, третий код будет разорван.

По-моему, вы всегда должны определять пустые конструкторы (один лайнер) для публичных классов, используемых третьими лицами.

Ответ 2

KISS - Если вашему классу не нужно ничего делать в конструкторе по умолчанию - не определяйте его. Компилятор будет генерировать один для вас.

Из лошадиного устья:

Если класс не является статическим, классы без конструкторов дается открытый конструктор по умолчанию на С# компилятор для включения класса конкретизации.

Ответ 3

There nothing like default constructors. Это открытый конструктор без параметров в С#. Компилятор С# будет искать конструкторы в классе во время компиляции и будет добавлять открытый конструктор без параметров, если конструкторы не определены. Так что нормально пропустить определение конструктора, если для объектов класса не требуется специальной операции для построения.

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

У вас также может быть собственный конструктор без параметров, который играет важную роль в создании одноэлементных классов.

Ответ 4

Если вам не нужен конструктор без параметров, не добавляйте его с пустым телом. Однако, если кто-то хочет сериализовать/десериализовать объекты вашего класса, вам понадобится конструктор без параметров.

Если вы не определяете конструкторы, то компилятор автоматически генерирует для вас параметр без параметров, но он не будет, если вы сами определяете конструктор.

Кстати, вы можете подавить автоматически созданный конструктор по умолчанию С#, задав пустой, закрытый конструктор.

Ответ 5

По умолчанию С# добавит для вас конструктор нулевых параметров. Поэтому не добавляйте его, если у вас нет ничего особенного.

Вам нужно будет добавить любой пустой конструктор самостоятельно - даже без кода - если у вас есть другой конструктор с параметрами и вы хотите сохранить конструктор без параметров.

Другой сценарий, в котором вы хотите добавить пустой конструктор без параметров, - это если вы хотите изменить его модификатор доступа из общедоступного в нечто другое (личное, защищенное или внутреннее)

Ответ 6

Компилятор С# создаст для вас конструктор по умолчанию, поэтому вы не должны писать без параметров, с пустым телом.

Ответ 7

Единственными моментами, когда я буду включать пустой конструктор без параметров, является то, что я хочу, чтобы конструктор был закрытым, или если я хочу, чтобы конструктор без параметров вызывал другую перегрузку с нулевым параметром. BTW, в приведенном выше примере вы создали закрытый конструктор Test, не указав общедоступный.

class Foo
{
    public Foo()
        : this(null)
    {
    }

    public Foo(string bar)
    {
        if (bar != null)
        {
            Console.WriteLine(bar);
        }
    }
}

Ответ 8

Не записывайте пустой конструктор, который он будет создан по умолчанию