C# - Головна Простір імен
► System (5)► Microsoft (1) Для учнів (початківців)
► Відео уроки (4)► Навчання (177) ► Приклади програм (19) ► Секрети Сі Шарп (4) Для професіоналів
► Навчання (6)► Приклади програм (1) |
Конструктори і деструктори
Існує спеціальна категорія методів, що відповідають за такі дії з об'єктами, як ініціалізація, присвоювання, управління пам'яттю і перетворення типів. Такі методи називаються конструкторами. Вони викликаються компілятором неявно кожен раз, коли об'єкт класу створюється оператором 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); } } зворотні Функції конструктора функцій виконують деструктори. Вони предназнычены для звільнення пам'яті від об'єктів класу. Однак у З# є більш ефективний механізм для цього, він називається «збіркою сміття». Коли в С#-програмі відсутнє звернення до об'єкту, то він розглядається як не використовується більше, і система автоматично без участі програміста, звільняє займану їм пам'ять, яка в подальшому може бути виділена під інші об'єкти. «Збірка сміття» періодично здійснюється в ході всієї програми. В С# все ж таки передбачена можливість створення деструктора, який видаляє об'єкт перед збиранням сміття». Він має наступну конструкцію: ~ <имя_класса> () { //тіло деструктора } Деструктор викликається у всіх випадках, коли об'єкт повинен бути видалений з пам'яті.
Переглядів: 2896 |