C# 4.0 полное руководство - 2011
Шрифт:
Конструктор инициализирует объект при его создании. У конструктора такое же имя, как и у его класса, а с точки зрения синтаксиса он подобен методу. Но у конструкторов нет возвращаемого типа, указываемого явно. Ниже приведена общая форма конструктора.
доступ имя_класса{список_параметров) {
// тело конструктора
}
^ Как правило, конструктор используется для задания первоначальных значений
У всех классов имеются конструкторы, независимо от того, определите вы их или нет, поскольку в 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
Параметризированные конструкторы
В предыдущем примере использовался конструктор без параметров. В некоторых случаях этого оказывается достаточно, но зачастую
// Параметризированный конструктор.
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
Класс Building можно усовершенствовать, добавив в него конструктор, автоматически инициализирующий поля Floors, Area и Occupants при создании объекта. Обратите особое внимание на то, как создаются объекты класса Building.
// Добавить конструктор в класс Building.
using System;
class Building {
public int Floors; // количество этажей
public int Area; // общая площадь здания
public int Occupants; // количество жильцов
// Параметризированный конструктор для класса Building, public Building(int f, int a, int o) {
Floors = f;
Area = a;
Occupants = o;
} \
// Возвратить площадь на одного человека, public int AreaPerPerson {
return Area / Occupants;
}
// Возвратить максимальное количество человек, занимающих здание,
// исходя из заданной минимальной площади на одного человека. ^ public int MaxOccupant(int minArea) { return Area / minArea;
}
}
// Использовать параметризированный конструктор класса Building, class BuildingDemo { static void Main {
Building house = new Building(2, 2500, 4);
Брачный сезон. Сирота
Любовные романы:
любовно-фантастические романы
рейтинг книги
Адвокат империи
1. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
фэнтези
рейтинг книги
Лейб-хирург
2. Зауряд-врач
Фантастика:
альтернативная история
рейтинг книги
Измена. Верни мне мою жизнь
Любовные романы:
современные любовные романы
рейтинг книги
На границе империй. Том 5
5. Фортуна дама переменчивая
Фантастика:
боевая фантастика
попаданцы
рейтинг книги
Бастард Императора. Том 2
2. Бастард Императора
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
На изломе чувств
Любовные романы:
современные любовные романы
рейтинг книги
Буревестник. Трилогия
Фантастика:
боевая фантастика
рейтинг книги
Убивать чтобы жить 6
6. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
рейтинг книги
Приватная жизнь профессора механики
Проза:
современная проза
рейтинг книги

Башня Ласточки
6. Ведьмак
Фантастика:
фэнтези
рейтинг книги
Два мира. Том 1
Фантастика:
фэнтези
попаданцы
мистика
рейтинг книги
Отрок (XXI-XII)
Фантастика:
альтернативная история
рейтинг книги
