C# Kortejlar C# kartejlarni e’lon qilish


C# tilida metodlarni qayta yuklash


Download 260.19 Kb.
bet21/28
Sana18.06.2023
Hajmi260.19 Kb.
#1574109
1   ...   17   18   19   20   21   22   23   24   ...   28
Bog'liq
dasturlash tyorya 8 shrift

36. C# tilida metodlarni qayta yuklash.
Ba'zan bir xil usulni yaratish kerak bo'ladi, lekin boshqa parametrlar to'plami bilan. Va mavjud parametrlarga qarab, usulning ma'lum bir versiyasini qo'llang. Bu xususiyat, shuningdek, usulni ortiqcha yuklash deb ham ataladi.Va C# da biz bir xil nomga ega, ammo imzosi boshqacha bo'lgan sinfda bir nechta usullarni yaratishimiz mumkin. Imzo nima? Imzo quyidagi jihatlardan iborat:Usul nomi Parametrlar soni Parametr turlari Parametrlar tartibi Parametr o'zgartiruvchilar Ammo parametrlarning nomlari imzoga kiritilmagan. Masalan, quyidagi usulni oling: public int Sum(int x, int y) { return x + y; }Ushbu usulning imzosi quyidagicha ko'rinadi:Sum(int, int) Va usulning haddan tashqari yuklanishi shunchaki usullarning boshqa imzoga ega bo'lishi bilan bog'liq bo'lib, unda faqat usulning nomi mos keladi. Ya'ni, usullar bir-biridan farq qilishi kerak: Parametrlar soni Parametr turi Parametrlar tartibi Parametr o'zgartiruvchilar Masalan, bizda quyidagi sinf bor deylik: Add usulining to'rt xil versiyasi mavjud, ya'ni bu usulning to'rtta ortiqcha yuklanishi aniqlanadi.Usulning dastlabki uchta versiyasi parametrlar soni bo'yicha farqlanadi. To'rtinchi versiya parametrlar soni bo'yicha birinchisi bilan bir xil, ammo ularning turi bo'yicha farqlanadi. Bunday holda, kamida bitta parametr turi bo'yicha farq qilishi kifoya. Shuning uchun, bu Qo'shish usulining haqiqiy ortiqcha yukidir.


35. C# tilida parametrlarni qiymati va adresi bo’yicha uzatish (ref, out, in)
Argumentlarni qiymat bo'yicha parametrlarga o'tkazishda usul parametri o'zgaruvchining o'zini emas, balki uning nusxasini oladi va keyin o'zgaruvchining o'zidan qat'i nazar, ushbu nusxa bilan ishlaydi.
Shunday qilib, yuqorida chaqirilganda, Increment usuli raqam o'zgaruvchisining nusxasini oladi va bu nusxaning qiymatini oshiradi. Shuning uchun Increment usulining o'zida biz n parametrining qiymati 1 ga ortganligini ko'ramiz, lekin usul bajarilgandan so'ng o'zgaruvchining soni bir xil qiymatga ega bo'ladi - 5. Ya'ni nusxa o'zgaradi, lekin o'zgaruvchi o'zi o'zgarmaydi.Parametrlarni mos yozuvlar bo'yicha o'tkazishda ref modifikator parametrlardan oldin ishlatiladi : Qiymatlarni mos yozuvlar bo'yicha parametrlarga o'tkazishda usul xotiradagi o'zgaruvchining manzilini oladi. Va shunday qilib, agar mos yozuvlar orqali o'tgan parametrning qiymati usulda o'zgartirilsa, u holda uning o'rniga uzatiladigan o'zgaruvchining qiymati ham o'zgaradi.
Masalan, xotiradagi raqam o'zgaruvchisining o'ziga havola Increment usuliga o'tkaziladi. Va agar Increment-dagi n parametrining qiymati o'zgarsa, bu raqam o'zgaruvchisini ham o'zgartiradi, chunki n parametr va raqam o'zgaruvchisi xotiradagi bir xil manzilga ishora qiladi.E'tibor bering, modifikator refusulni e'lon qilishda parametrdan oldin ham, usulni chaqirganda ham parametrga uzatiladigan argumentdan oldin ko'rsatiladi.Bundan tashqari, ref misolida bo'lgani kabi , out kalit so'zi ham usulni belgilashda, ham uni chaqirishda ishlatiladi.
Shuni ham yodda tutingki, bunday parametrlardan foydalanadigan usullar ularga ma'lum bir qiymat berishlari kerak. Ya'ni, quyidagi kod yaroqsiz bo'ladi, chunki u out parametri uchun hech qanday qiymat ko'rsatmaydi:Bunday parametrlardan foydalanishning go'zalligi shundaki, aslida biz usuldan bitta qiymatni emas, balki bir nechta qiymatni qaytarishimiz mumkin. Bu erda to'rtburchakning kengligi va balandligini (kenglik va balandlik parametrlari) oladigan GetRectangleData usuli mavjud. Va biz to'rtburchakning maydoni va perimetrini hisoblash uchun ikkita chiqish parametridan foydalanamiz.
Bunday holda, siz usul chaqirilganda to'g'ridan-to'g'ri out -parameters ga uzatiladigan o'zgaruvchilarni belgilashingiz mumkin. 



Download 260.19 Kb.

Do'stlaringiz bilan baham:
1   ...   17   18   19   20   21   22   23   24   ...   28




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