Proekt 4-2. Destruktorla ishini ko’rgazmasi.
Aytib o’tildiki, agar ob’ektlar programmada boshQa ishlatilmasa, ularni yo’Qotish majburiy bo’lmaydi. “Axlat yig’ish” faQatgina effektiv bajarilishi mumkin bo’lgan holda bajariladi (odatda bir nechta ob’ektlarga bir vaQtda). Shuning uchun destruktor ishini ko’rsatish uchun ob’ektlarning ko’plab sonini yaratish va yo’Qotish zarur. Aynan shunga biz ushbu proektni bag’ishlaymiz.
Ketma-ket instruksiya
YAngi fayl yarating va uni Destruct.cs deb nomlang.
Destruct sinfni pastda ko’rsatilgandek yarating:
Class Destruct
Int x;
Public Destruct (int i) (
x-i
G’G’ ob’ekt xotiradan yo’Qotilayotganda chaQiriladi
~Destruct () (
Console.WriteLine(Ob’ektdan xotirani yo’Qotish);
G’G’uslub srazu yo’Qotiladigan ob’ektni yaratadi.
Public void generator(int i) (
Destruct 0qnew Destruct (i);
Konstruktor o’ziga argument sifatida o’tkaziladigan x Qiymatli o’zgaruvchanni o’zlashtiradi. Ushbu programmada destruktor o’zgaruvchan x yordamida ekran yo’Qotiladigan ob’ektning nomerini beradi. Alohida Destruct ob’ektini yaratadigan va shu zaxoti yo’Qotadigan generator () uslubiga ahamiyat bering. Qo’llanmaning keyingi punktida Qanday bajarilishini ko’rasiz.
DestructDemo sinfini yarating:
Class DestructDemo:
Public static void Main () {
Int count;
Destruct ob – new Destruct (0);
G’* so’ngra for sikli yordamida ob’ektlarning ko’p miQdori yaratiladi. Bo’sh xotiraning barchasi ishlatilgandan so’ng «axlat yig’ish” operatsiyasi amalga oshiriladi. Buning uchun kearkli ob’ektlar soni kompyuter xotirasi sig’imiga bog’liQ, shuning uchun siklini shartli ravishda ko’rsatayotgan son ko’paytiriladi (sikl o’tish miQdori) *G’
for (count I; count – 100000’ count QQ)
ob.generator(count);
}
}
Boshida eshbu sinfda ob Destruct ob’ekti yaratiladi. So’ngra ushbu ob’ekt va generator uslubi yordamida 100000 ta ob’ekt yaratiladi. Natijada programma bajarilishini ayrim etapida faQatgina yaratilmay, balki yo’Qotilib ham turiladi, shunda turli etaplarda “axlat yig’ish” amalga oshib turadi. Qachon va Qancha tez ushbu bajarilishi bir necha faktorlarga bog’liQ – bo’sh xotiraning boshlang’ich sig’imi, operatsion sistemaning tipi va boshQa. Lekin ma’lum vaQtdan so’ng ekranda destruktor tomonidan xabarlar paydo bo’ladi. Agar bunday xabarlar chiQmasa, yaratilayotgan ob’ektlarni for siklidagi count o’zgaruvchilar yo’li bilan oshirish kerak.
Quyida DextructDemo.cs programmasi ketma-ketligi ko’rsatilgan:
G’*
proekt 4-2.
Bu programmada destruktor ishi ko’rsatiladi.
G’*
using system;
class Destruct {
public int x;
public Destruct (int i) {
x-i
}
G’G’Xotiradan ob’ekt yo’Qotilganda chaQiriladi.
~Destruct () {
Console.WriteLine(“Destructing” Q x);
}
G’G’uslub srazu tozalanadigan ob’ektni yaratadi.
Public void generator(int i) (
Destruct 0qnew Destruct (i);
}
}
classDestructDemo{
public static void Main () {
int count;
Destruct ob – new Destruct (0);
G’* so’ngra for sikli yordamida ob’ektlarning ko’p miQdori yaratiladi. Bo’sh xotiraning barchasi ishlatilgandan so’ng «axlat yig’ish” operatsiyasi amalga oshiriladi. Buning uchun kearkli ob’ektlar soni kompyuter xotirasi sig’imiga bog’liQ, shuning uchun siklini shartli ravishda ko’rsatayotgan son ko’paytiriladi (sikl o’tish miQdori)
*G’
for (count I; count – 100000’ count QQ)
ob.generator(count);
}
Do'stlaringiz bilan baham: |