Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
7 семестр / Учебники / Все лекции С# / Все лекции С# / Лекции C# for print fineprint.docx
Скачиваний:
325
Добавлен:
24.02.2016
Размер:
523.48 Кб
Скачать

Конструкторы

Конструкторы являются одной из разновидностей методов класса. Рассмотрим назначение конструкторов.

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

У каждого объекта имеется конструктор, используемый по умолчанию, который представляет собой метод без параметров. Его имя совпадает с именем самого класса.

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

Для присваивания начальных значений данным, хранящимся внутри объекта, часто применяются конструкторы с параметрами. В С# конструктор можно вызвать, введя ключевое слово new. Экземепляры также могут создаваться с помощью конструктора, используемого не по умолчанию. Как и имя конструктора по умолчанию, имена этих конструкторов совпадают с именем класса, но у них имеются еще и параметры. Используются они аналогичным образом (см.следующую лекцию).

Деструкторы

Деструкторы также являются разновидностью метода класса. Деструкторы используются в .NET Framework для того, чтобы выполнять уборку за объектами. В общем случае программисту не требуется писать какой бы то ни было код для метода деструктора; напротив, за него будет работать операция, выполняющаяся по умолчанию. Однако если необходимо выполнить какие-либо важные действия перед уничтожением экземпляра объекта, то можно задать определенные инструкции.

Очень важно запомнить, что метод деструктора объекта не вызывается сразу, как только данный объект перестает использоваться. Только после того как сборщик мусора среды исполнения .NET выполнит свою работу, он будет окончательно уничтожен.

Статические члены класса и члены класса экземпляра

Наряду с такими членами, как свойства, методы и поля, относящимися к конкретным экземплярам объектов, существует возможность использовать статические (static) члены (известные также под названием членов с общим доступом(shared)), среди которых могут быть методы, свойства и поля.

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

Для того чтобы использовать статические члены не требуется создавать экземпляры объектов с типом данного класса.

Использовавшиеся ранее методы Console.WriteLine() и Convert .ToString() являются статическими. Ни в какой момент времени не требуется создавать экземпляры классов Console или Сonvert.

Существуют различные ситуации, при которых статические свойства и методы могут быть использованы с большой пользой. В синтаксисе UML статические члены классов выделяются подчеркиванием (рисунок 13.4).

CupOfCoffee

+Marka: string

+static Instant: bool

+Milk: bool

+Sugar: bool

-Description: string

+AddSugar(in amount: byte): byte

+static Metod():void


Рисунок 13.4 – UML представление статических членов класса