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);