Kingshuk_SP Ответов: 1

Зачем нам нужны конструкторы


constructors are used to initialize fields of class.

That we can do using declaring methods inside a class. like:

class A
{
  public int a,b;

  public void initializeFields(int x, int y)
  {
    a = x; b = y;
  }
}

class MainClass
{
    static void Main()
    {
        A a = new A();
        a.initializeFields(10,20);
        Console.Read();
    }
}

Instead of writing above code, why we go for constructors ?? Like: 

class A
{
  public int a,b;

  public A(int x, int y)
  {
    a = x; b = y;
  }
}

class MainClass
{
    static void Main()
    {
        A a = new A(10,20);
        Console.Read();
    }
}

I want to know the ADVANTAGE , SIGNIFICANCE of using the later code ??


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

I want to know the EXACT reason

F-ES Sitecore

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

А а = новый();

Это позволяет разработчику знать, что объект нуждается в некоторых значениях по умолчанию, тогда как с другим методом что произойдет, если initializeFields никогда не вызывается? Как разработчик узнает, что этот метод должен быть вызван?

Kingshuk_SP

@Ф-Эс компания

я думаю, что это имеет смысл. Идеальный.

BillWoodruff

Они являются существенной особенностью языка C#. Что, если спросить вас о точной причине, почему в вашем теле есть кровь ?

Вы напрасно тратите время, повторяя этот глупый вопрос,который уже был отклонен.

Kingshuk_SP

@BillWoodruff

дружище, сначала пойми, что ты говоришь..
Организму нужна только "кровь", альтернативы нет.. только один путь..

Но то, о чем я спросил Здесь: "есть два пути.. Уже есть способ, которым мы можем инициализировать членов класса (программа 1), тогда почему мы должны идти за конструкторами..(Программа 2)??"

Вы не понимаете вопрос правильно, может быть ... это нормально.
Но прежде чем что-то комментировать, просто дважды подумайте об этом, если это оправдано.
Спасибо.

1 Ответов

Рейтинг:
12

OriginalGriff

Нет никакой "точной" причины - они выполняют множество работ!

Конструкторы позволяют указать, что объект может быть создан различными способами или что он должен иметь информацию, предоставленную при его создании. Они также позволяют нам полностью создать объект до того, как он будет когда - либо использован-что может включать загрузку данных из базы данных или файла на диске; подключение к веб-сайту, чтобы проверить, действительна ли лицензия на использование класса, или почти все остальное, что нам нужно.
Первое: каждый объект должен иметь конструктор. Если вы его не определяете, то система создает для вас конструктор без параметров по умолчанию, который ничего не делает. Если вы определяете конструктор, то это значение по умолчанию не создается, поэтому создание конструктора самостоятельно позволяет вам сказать: "этот класс нуждается в этой информации и не может быть использован без нее". Например, у вас может быть класс Circle, которому при построении должен быть передан радиус.
Это позволяет нам использовать экземпляры классов позже, полностью зная, что они будут работать: вы не можете создать круг, который не имеет радиуса, поэтому свойство Area всегда будет работать, например.
Вы также можете перегрузить конструктор, чтобы позволить пользователю быть более гибким в том, как создать свой класс - для круга вы можете предоставить конструктор, который принимает радиус, и тот, который принимает площадь, и тот, который принимает окружность, - потому что вы можете создать свой круг со всей необходимой информацией из любого из них.

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

Здесь много чего происходит, так что погуглите немного и почитайте некоторые статьи о них - это хорошая статья: Конструкторы в C#[^]