Основы C#. Урок 11. Конструкторы классов
Для начала кратко обсудим, что такое конструктор вообще.
Конструктор - это функция (метод) класса. Раз эта функция, то
описываем мы ее почти точно так же, как и любую другую функцию
класса - пишем параметры в круглых скобках и т. п. Когда
конструктор вызывается? В момент создания переменной. При этом
у класса может быть несколько конструкторов - но при этом они
должны различаться или типом параметров, или их
количеством.
Этот урок будет основан на предыдущем. Откройте проект,
созданный на прошлом уроке. Давайте добавим в наш класс Worker
конструктор: ...
class Worker
{
public int age=3;
public string name;
//Конструктор 1
public Worker(int age, string name)
{
this.age=age;
this.name=name;
}
}
...
Обратите внимание на ряд особенностей конструктора.
Во-первых, конструктор называется как класс. Раз наш класс
называется Worker, значит и конструктор должен называться
точно также. И во-вторых, конструктор, в отличие от других
методов класса, не возвращает никакого значения (даже типа
void). Если вы знакомы с языком C++, то, несомненно, это вам
все знакомо.
Что делает наш конструктор? Он записывает передаваемые в
него параметры во внутренние переменные класса. Обратите
внимание, что называются они одинаково - age и age, name и
name. Компилятор сначала ищет локальную переменную с таким
именем, и, если не находит, то переменную класса. Поэтому age
(и name) - это передаваемый в конструктор параметр. Если же
нам надо сослаться на переменную класса (при существавании
переменной с таким же именем, как и передаваемый в функцию
параметр), то мы используем ключевое слово this. Оно всегда
указывает на текущий экземпляр нашего класса. Таким образом в
строчках ...
this.age=age;
this.name=name;
...
мы передаем параметры конструктора в переменые класса.
Теперь изменим тестовый класс test следующим
образом: ...
static void Main(string[] args)
{
//Вызываем конструктор
Worker wrk1 = new Worker(40, "Вася");
Console.WriteLine(wrk1.name+", "+wrk1.age);
}
...
Теперь после объявления переменной мы вызываем конструктор
с двумя параметрами, который запишет в переменные age и name
экземпляра класса Worker значания 40 и "Вася". Строчкой ниже
эти значения выводятся на
экран. |