русс | укр

C# - Головна
Контакти
Задайте питання...
Перегляд всіх питань


Простір імен
  ► System (5)
  ► Microsoft (1)


Для учнів (початківців)
  ► Відео уроки (4)
  ► Навчання (177)
  ► Приклади програм (19)
  ► Секрети Сі Шарп (4)

Для професіоналів
  ► Навчання (6)
  ► Приклади програм (1)










Конструктори і деструктори C#

 

Існує спеціальна категорія методів, що відповідають за такі дії з об'єктами, як ініціалізація, присвоювання, управління пам'яттю і перетворення типів. Такі методи називаються конструкторами. Вони викликаються компілятором неявно кожен раз, коли об'єкт класу створюється оператором new. В оголошенні конструктора його ім'я збігається з ім'ям класу. Конструкторів в класі може бути безліч завдяки поняттю перевантаження функції. Для конструктора типово копіювання наданих йому параметрів поля об'єкта, цим можуть обмежуватися його функції. Оскільки параметри і поля відносяться до одних і тих же даних, то прийнято іменувати параметри початковими літерами назв полів (якщо при цьому не виникне конфлікту імен).

Конструктор має следуюий вигляд:

<имя_класса>()

{

//тіло конструктора

}

Всі класи мають конструктор незалежно від того визначений він чи ні. В С# за замовчуванням передбачений конструктор, який привласнює нульові значення всім змінним примірника (для змінних звичайного типу) і null (для змінних посилального типу). Але якщо конструктор явно оголошений в класі, то конструктор за замовчуванням використовуватися не буде.

Приклад:

using System;

class NewClass

{

public int a;

public NewClass()

{

a = 100;

}

}

class ConstrDemo

{

public static void Main()

{

NewClass c1 = new NewClass();

Console.WriteLine(c1.a);

}

}

зворотні Функції конструктора функцій виконують деструктори. Вони предназнычены для звільнення пам'яті від об'єктів класу. Однак у З# є більш ефективний механізм для цього, він називається «збіркою сміття». Коли в С#-програмі відсутнє звернення до об'єкту, то він розглядається як не використовується більше, і система автоматично без участі програміста, звільняє займану їм пам'ять, яка в подальшому може бути виділена під інші об'єкти. «Збірка сміття» періодично здійснюється в ході всієї програми.

В С# все ж таки передбачена можливість створення деструктора, який видаляє об'єкт перед збиранням сміття». Він має наступну конструкцію:

~ <имя_класса> ()

{

//тіло деструктора

}

Деструктор викликається у всіх випадках, коли об'єкт повинен бути видалений з пам'яті.

 

Переглядів: 3455






© 2012 ci-sharp.ru При використанні матеріалу пряме iндексуюче посилання на сайт ОБОВ'ЯЗКОВЕ.
Права строго захищені нормами міжнародного права, інтелектуальної власності та авторського права.