Member 14099889 Ответов: 3

У нас есть методы, почему мы используем конструкторы в C#? Пожалуйста, приведите мне пример.


we have methods why we are using constructors in c#


Что я уже пробовал:

we have methods why we are using constructors in c#? please give real time example ?

3 Ответов

Рейтинг:
2

OriginalGriff

Класс может быть сложной вещью: подумайте о форме на мгновение. Это класс, но это класс, который требует много сложных вещей, которые нужно сделать, прежде чем он будет готов к использованию - загляните в свой файл Designer.cs и посмотрите, сколько работы выполняет InitializeComponent.

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

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

Вам не нужно их использовать - если вы не создадите конструктор, система создаст для вас пустой без параметров - и вы можете создавать объекты, где вызов конструктора совершенно необязателен. Если вы создадите struct вместо а class, то даже если вы предоставляете конструктор, он не вызывается, если только new используется ключевое слово:

public struct MyStruct
    {
    public int I;
    public string S;
    public MyStruct(int i)
        {
        I = i;
        S = "Goodbye";
        Console.WriteLine("MyStruct Constructor");
        }
    }

MyStruct ms1;                          // Constructor not called.
ms1.I = 666;
ms1.S = "Hello";
MyStruct ms2 = new MyStruct(333);      // Constructor called
Console.WriteLine("{0}:{1}", ms1.I, ms1.S);
Console.WriteLine("{0}:{1}", ms2.I, ms2.S);


Рейтинг:
2

Gerry Schmitz

Конструкторы могут заставить "пользователя" предоставить параметры, необходимые для правильного создания экземпляра этого класса.

Это еще одна форма "инъекции зависимости".


Рейтинг:
13

RickZeeland

Я бы сказал, что просто удобно настроить вещи на значение по умолчанию в конструкторе без необходимости вызывать какой-либо метод.
Смотрите примеры здесь: https://www.dotnetperls.com/constructor[^]
Но если вам не нравятся конструкторы, не используйте их :)