Everyday Italian


C# ni C++ shablonlariga nisbatan umumlashtirish



Yüklə 1,31 Mb.
səhifə3/6
tarix18.02.2023
ölçüsü1,31 Mb.
#84815
1   2   3   4   5   6
DASTURLASH TEXNOLOGIYAARI MA\'RUZA MATNI 107

2. C# ni C++ shablonlariga nisbatan umumlashtirish.

ShowType () usuli T parametrining turini ko'rsatib, uni typeof operatoriga o'tkazadi. Gen sinf ob'ektini yaratishda haqiqiy tip T bilan almashtirilganligi sababli, tip operatori o'ziga xos tip haqida kerakli ma'lumotlarni oladi.


GenericsDemo sinfi umumiy Gen sinfidan foydalanishni namoyish etadi. Birinchidan, int turi uchun Gen sinfining variantini yaratadi.

Gen iOb;


Ushbu e'lonni sinchkovlik bilan tahlil qilamiz. Avvalo, int turi Gen sinf nomidan keyin burchak qavslarida ko'rsatilganligiga e'tibor bering. Bunday holda, int Gen sinfidagi T turining parametriga bog'langan turdagi argument sifatida xizmat qiladi. Ushbu deklaratsiya Gen sinfining bir variantini yaratadi, unda T turi qaerda bo'lmasin, int turi bilan almashtiriladi. Shuning uchun, ushbu deklaratsiyadan so'ng, int ob ob-havo turiga va GetOb () metodiga qaytish turiga aylanadi.


Keyingi satrda iOb o'zgaruvchisiga int sinfining varianti uchun Gen klassi ob'ektining namunasiga havola beriladi.

iOb = yangi Gen (102);


E'tibor bering, Gen sinfining konstruktorini chaqirganda, int turining argumenti ham ko'rsatiladi. Bu zarur, chunki bog'lanish tayinlanadigan o'zgaruvchi (bu holda, iOb) Gen turiga kiradi. Shuning uchun yangi operator tomonidan qaytarilgan havola Gen turiga ham ega bo'lishi kerak. Aks holda, kompilyatsiya paytida xato yuzaga keladi. Masalan, quyidagi topshiriq kompilyatsiya vaqtidagi xatoga olib keladi.


iOb = yangi Gen (118.12); // Xato!


IOb o'zgaruvchisi Gen turiga kiradi va shuning uchun Gen turidagi ob'ektga murojaat qilish uchun foydalanilmaydi. Ushbu turdagi nazorat umumlashtirishning asosiy afzalliklaridan biri hisoblanadi, chunki u turdagi xavfsizlikni ta'minlaydi.


Keyin dastur obO o'zgaruvchini turini iOb ob'ektiga - System.Int32 turiga ko'rsatadi. Bu int turiga mos keladigan .NET tuzilishi. Keyingi ob-havoning qiymati kodning keyingi qatorida olinadi.

int v = iOb.GetOb ();


GetOb () usuli uchun qaytish turi bu T tipidir, u iOb o'zgaruvchisi e'lon qilinganida int turi bilan almashtirilgan va shuning uchun GetOb () int turiga int qiymatini qaytaradi. Shuning uchun, bu qiymat int turidagi o'zgaruvchiga tayinlanishi mumkin.
Keyingi, Gen ob'ekti GenericsDemo sinfida e'lon qilinadi.

Gen strOb = yangi Gen ("Umumiylashtirish samaradorlikni oshiradi.");


Ushbu deklaratsiya tip satrining argumentini belgilaydi, shuning uchun Gen sinfidagi ob'ektda T o'rniga tip satr mavjud. Natijada, satr turi uchun Gen sinfining bir varianti yaratiladi, chunki bu erda ko'rib chiqilgan dasturning qolgan kodlari ko'rsatib turibdi.


Davom etishdan oldin ba'zi atamalar aniqlanishi kerak. Gen sinf uchun, masalan, int yoki satr uchun dalil ko'rsatilsa, C # da yopiq qurilgan tip yaratiladi. Xususan, Gen yopiq qurilgan tur. Darhaqiqat, aslida Gen kabi umumlashtirilgan tip mavhumdir. Va faqat ma'lum bir variant qurilganidan keyin, masalan, Gen , beton turi yaratiladi. Gen kabi konstruktsiya C # da ochiq tarzda qurilgan turi deb nomlanadi, chunki u T turining parametrini belgilaydi, ammo int kabi o'ziga xos turni emas.
C # da davlat va xususiy kabi tushunchalar ko'proq aniqlanadi. Ochiq tip bunday parametr yoki har qanday umumlashtirilgan tip deb hisoblanadi, bunda argument turi parametridir yoki uni o'z ichiga oladi. Ochiq bilan bog'liq bo'lmagan har qanday turdagi yopiq hisoblanadi. O'rnatilgan tip - bu barcha turdagi dalillar taqdim etiladigan umumiy tip. Agar ushbu barcha dalillar xususiy tur bo'lsa, unda bunday tur yopiq deb hisoblanadi. Va agar bir yoki bir nechta turdagi dalillar ochiq turlar bo'lsa, unda bunday tur ochiq tarzda tuzilgan deb hisoblanadi.



Yüklə 1,31 Mb.

Dostları ilə paylaş:
1   2   3   4   5   6




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©www.azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin