Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C# - лекции IntUit (Биллиг В.А.).pdf
Скачиваний:
140
Добавлен:
13.02.2015
Размер:
4.13 Mб
Скачать

Console.WriteLine("Выполняется статический конструктор!");

}

В нашей тестирующей процедуре, работающей с объектами класса Person, этот конструктор вызывается первым, и первым появляется сообщение этого конструктора.

Подводя итоги, можно отметить, что объекты создаются динамически в процессе выполнения программы - для создания объекта всегда вызывается тот или иной

конструктор класса.

Деструкторы класса

Если задача создания объектов полностью возлагается на программиста, то задача удаления объектов, после того, как они стали не нужными, в Visual Studio .Net снята с программиста и возложена на соответствующий инструментарий - сборщик мусора. В классическом варианте языка C++ деструктор так же необходим классу, как и конструктор. В языке C# y класса может быть деструктор, но он не занимается удалением объектов и не вызывается нормальным образом в ходе выполнения программы. Так же, как и статический конструктор, деструктор класса, если он есть, вызывается автоматически в процессе сборки мусора. Его роль - в освобождении ресурсов, например, файлов, открытых объектом. Деструктор C# фактически является финализатором (finalizer), с которыми мы еще встретимся при обсуждении исключительных ситуаций. Приведу формальное описание деструктора класса Person:

~Person()

{

//Код деструктора

}

Имя деструктора строится из имени класса с предшествующим ему символом ~ (тильда).

Как и у статического конструктора, у деструктора не указывается модификатор доступа.

Проектирование класса Rational

В заключение этой лекции займемся проектированием класса Rational, описывающего известный в математике тип данных - рациональные числа. По ходу проектирования будут вводиться новые детали, связанные с описанием класса. Начнем проектирование, как обычно, с задания тега <summary>, описывающего назначение класса, его свойства

иповедение. Вот этот текст:

///<summary>

///Класс Rational

///определяет новый тип данных - рациональные числа и

///основные операции над ними - сложение, умножение,

///вычитание и деление. Рациональное число задается парой

///целых чисел (m,n) и изображается обычно в виде дроби m/n.

///Число m называется числителем,n - знаменателем. Для

///каждого рационального числа существует множество его

///представлений, например, 1/2, 2/4, 3/6, 6/12 - задают

///одно и тоже рациональное число. Среди всех представлений

///можно выделить то, в котором числитель и знаменатель

///взаимно несократимы. Такой представитель будет храниться

///в полях класса. Операции над рациональными числами

///определяются естественным для математики образом

///</summary>

public class Rational

{

// Описание тела класса Rational

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]