У всех классов имеются конструкторы, независимо от того, определите вы их или нет, поскольку в C# автоматически предоставляется конструктор, используемый по умолчанию и инициализирующий все переменные экземпляра их значениями по умолчанию. Для большинства типов данных значением по умолчанию является нулевое, для типа bool — значение false, а для ссылочных типов — пустое значение. Но как только вы определите свой собственный конструктор, то конструктор по умолчанию больше не используется.
Ниже приведен простой пример применения конструктора.
// Простой конструктор.
using System;
class MyClass { public int x;
public MyClass {
x = 10;
}
}
class ConsDemo {
static void Main {
MyClass tl = new MyClass;
MyClass t2 = new MyClass;
Console.WriteLine(tl,x + " " + t2.x);
}
}
В данном примере конструктор класса MyClass имеет следующий вид.
public MyClassO {
X =10;
}
Обратите внимание на то, что этот конструктор обозначается как public. Дело в том, что он должен вызываться из кода, определенного за пределами его класса. В этом конструкторе переменной экземпляра класса MyClass присваивается значение 10. Он вызывается в операторе new при создании объекта. Например, в следующей строке:
MyClass tl = new MyClassO;
конструктор MyClass вызывается для объекта tl, присваивая переменной его экземпляра tl. х значение 10. То же самое происходит и для объекта t2. После конструирования переменная t2 . х будет содержать то же самое значение 10. Таким образом, выполнение приведенного выше кода приведет к следующему результату.
10 10
Параметризированные конструкторы
В предыдущем примере использовался конструктор без параметров. В некоторых случаях этого оказывается достаточно, но зачастую конструктор, должен принимать один или несколько параметров. В конструктор параметры вводятся таким же образом, как и в метод. Для этого достаточно объявить их в скобках после имени конструктора. Ниже приведен пример применения параметризированного конструктора MyClass.
// Параметризированный конструктор.
using System;
class MyClass { public int x;
public MyClass(int i) { x = i;
}
}
class ParmConsDemo { static void Main {
MyClass tl = new MyClass(10);
MyClass t2 = new MyClass(88);
Console.WriteLine(tl.x + " " + t2.x);
}
}
При выполнении этого кода получается следующий результат.
10 88
В данном варианте конструктора MyClass определен параметр i, с помощью которого инициализируется переменная экземпляра х. Поэтому при выполнении следующей строки кода:
MyClass tl = new MyClass(10);
параметру i передается значение, которое затем присваивается переменной х.
Добавление конструктора в класс Building