Interfeys toifalari tushunchasi Interfeys toifalarni abstract bazaviy sinflar bilan taqqoslash Maxsus interfeyslarni kiritish


Download 0.77 Mb.
bet15/50
Sana26.01.2023
Hajmi0.77 Mb.
#1129439
1   ...   11   12   13   14   15   16   17   18   ...   50
Bog'liq
MAVZULAR UMUMIY

C# loyihalarida where kalit so’zini qo’llashga hech qachon sizda ehtiyoj tug’ilmasligi ham mumkin, faqat agarda toifalarga nisbatan havfsiz bo’lgan qanaqadir mazsus kollektsiyalar yaratishingizga to’g’ri kelmasa. Shu aytilganlarga qaramay, quyidagi bir nechta (qismiy) kod misolida where kalit so’zi bilan ishlash namoyish etilgan.
where kalit so’zini ishlatishga oid misollar
Maxsus umumlashgan sinf yaratilgan va toifa parametrida standart konstruktor mavjudligini ta’minlash zarur, deb faraz qilaylik. Maxsus umumlashgan sinf T toifa nusxalarini yaratadigan hollarda bu foydali bo’lishi mumkin, chunki standart konstruktor barcha toifa uchun umumiy bo’la oladigan yagona konstruktordir. Undan tashqari, T ga bunday cheklov kompilyatsiya bosqichida tekshirishga erishishni ta’minlaydi; agar T – ishoraviy toifa bo’lsa, u holda dasturchi sinf e’lonida standart konstruktorni takror aniqlashni yodida tutadi (sizga ma’lumki, sinfning o’z konstruktori aniqlanganida standart konstruktor undan chiqarib yuboriladi).
// MeningUmumSinfim sinfi object ning vorisidir, ayni paytda undagi
// elementlar standart konstruktorga ega bo’lishi kerak
public class MeningUmumSinfim where T : new ()
{ … }

Bu yerdagi where konstruktsiyasi cheklanishi kerak bo’lgan toifa parametrini ko’rsatadi, undan keyin esa ikki nuqta amali keladi , shunga ahamiyat bering. Ikki nuqta amalidan keyin esa turli mumkin bo’lgan cheklovlar (qaralayotgan holda – standart konstruktor) sanab o’tiladi. Mana yana bir misol:
// MeningUmumSinfim sinfi object ning vorisidir, ayni paytda undagi
// elementlar IDrawable interfeysini realizatsiya qiluvchi sinfga qarashi
// va standart konstruktorni qo’llashi kerak
public class MeningUmumSinfim where T : class, IDrawable, new ()
{ … }

Bu yerda T toifaga uchta talab qo’yilmoqda. Birinchidan, u ishoraviy toifa bo’lishi kerak, struktura bo’lmasligi kerak, class leksemasi buni belgilaganidek. Ikkinchidan, T toifa IDrawable interfeysini realizatsiya qilishi kerak. Uchinchidan, T toifa shuningdek standart konstruktorga ham ega bo’lishi kerak. Cheklovlar to’plami vergullar bilan ajratilgan cheklovlar ro’yhatidan iborat bo’ladi, faqat new() cheklovi oxirida ko’rsatilishi kerakligiga ahamiyat bering. Shunday qilib, ushbu kod kompilyatsiya bo’lmaydi:

Download 0.77 Mb.

Do'stlaringiz bilan baham:
1   ...   11   12   13   14   15   16   17   18   ...   50




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling