Id qanday ob’yekt ekanligini bilmasligimiz InvalidCastException xatoligini keltirib chiqaradi.
Yuqoridagi kabi muammolarni bartaraf etish uchun umumlashgan (universal) turli qoliplar(shablon) kiritiladi. Umumlashgan tur foydalanuvchiga konkret turni aniqlash imkoniyatini yaratadi. Keling, Person sinfini umumlashgan sinf sifatida e’lon qilaylik.
class Person < T > yozuvidagi burchakli qavslar Person sinfini umumlashgan sinf ekanligini anglatadi. Bunda burchakli qavslar bilan berilga T turi faqat shu sinfda foydalaniladi.
Umumlashgan sinfda aynan T harfi ishlatilishi shart emas. Uning o’rniga boshqa harf yoki harf birikmasi ishlatilishi mumkin.
Endi T turi istalgan tur sifatida foydalanilishi mumkin.
Shu sabab T parametr universal parametr deyiladi. Chunki uni dastur ishlashi davomida istalgan tur bilan almashtirish mumkin.
Yuqoridagi dastur muammosini umumlashgan tur orqali bartaraf etish.
Shunday qilib, umumlashgan sinf yordamida dastur bajarilish vaqtini va mumkin bo’lgan xatolar sonini kamaytirish imkoniga ega bolamiz.
Ayrim hollarda universal parametrga boshlang’ich qiymat berishga to’g’ri keladi. Masalan, null qiymati.
Demak, null qiymatni to’g’ridan-to’g’ri qo’llab bo’lmaydi.
Bunday holda, default(T) operatoridan foydalanish kerak bo’ladi:
Bunda ssilkali turlar null qiymatni, sonli tiplar 0 qiymatni qabul qiladi.
Umumlashgan sinfda aynan T harfi ishlatilishi shart emas. Uning o’rniga boshqa harf yoki harf birikmasi ishlatilishi mumkin.
Endi T turi istalgan tur sifatida foydalanilishi mumkin.
Shu sabab T parametr universal parametr deyiladi. Chunki uni dastur ishlashi davomida istalgan tur bilan almashtirish mumkin.
Umumlashgan sinfda aynan T harfi ishlatilishi shart emas. Uning o’rniga boshqa harf yoki harf birikmasi ishlatilishi mumkin.
Do'stlaringiz bilan baham: |