Полная версия

Главная arrow Информатика arrow Информационные технологии и системы arrow
Деструкторы,Индексаторы

  • Увеличить шрифт
  • Уменьшить шрифт


<<   СОДЕРЖАНИЕ   >>

Деструкторы

В С# существует специальный вид метода, называемый деструктором, который вызывается сборщиком мусора непосредственно перед удалением объекта из памяти.

Замечание. Напоминаем, что сборщик мусора удаляет объекты, на которые нет ссылок. Он работает в соот­ветствии со своей внутренней стратегией в неизвестные для программиста моменты времени.

В деструкторе описываются действия, гарантирующие корректность последую­щего удаления объекта. Например, проверяется все ли ресурсы, используемые объектом, освобождены (файлы закрыты, удаленное соединение разорвано и т. п.).

Синтаксис деструктора:

[атрибуты] [extern] ~имя_класса()

{тело_деструктора}

Деструктор не имеет параметров, не возвращает зна­чения и не требует указания спецификаторов доступа. Его имя совпадает с име­нем класса и предваряется тильдой (~), символизирующей обратные по отноше­нию к конструктору действия. Тело деструктора представляет собой блок или просто точку с запятой. Если деструктор определен как внешний, то используется спецификатор extern. Пример работы деструктора:

classDemoArray

{

int[] MyArray;//закрытый массив

string name; //закрытое поле

publicDemoArray(intsize, intx, stringname)//конструктор

{

MyArray = new int[size];

this. name = name;

for (int i=0;i<size; ++i) MyArray[i]=x;

}

public void Print ()//метод

{

Console. Write(name+ " : ");

foreach (int a in MyArray) Console. Write(a+" ");

Console. WriteLine();

}

public int LengthN //свойство

{

get { return MyArray. Length; }

}

~DemoArray()//деструктор

{

Console. WriteLine("сработал деструктор для объекта "+this. name);

}

}

class Program

{

static void Main()

{

DemoArray a= new DemoArray(5,2, "один");

a. Print();

DemoArray b = new DemoArray(6,1, "два");

b. Print();

a = b;

a. Print();

}

}

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

В общем случае применение деструкторов замедляет процесс сборки мусора. Поэтому создавать деструкторы следует только тогда, когда необходимо освободить какие-то ресурсы перед удалением объекта.

 
<<   СОДЕРЖАНИЕ   >>

Похожие темы