1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
17 18 19 20
21 22 23 24
Endi esa 2 o’lchamli massivga misol ko’ramiz:
int[,] nums2 = { { 0, 1, 2 }, { 3, 4, 5 } };
Vizual ko’rinishda bu massiv:
0
1
2
3
4
5
Ko’p o’lchamli massivlarni e’lon qilish uchun kvadrat qavs ichiga vergul qo’yiladi, yani [,] ikki o’lchamli massiv, [,,] uch o’lchamli massiv va hokazo.
int[,] arr2d; // ikki o’lchamli massiv
int[,,] arr3d; // uch o’lchamli massiv
int[,,,] arr4d; // to’rt o’lchamli massiv
int[,,,,] aC#For Tsikl operatori
Metodlar. Metodlarni e’lon qilish. Parametrli metodlar. Parametrsiz metodlar. Metodlardan qiymat qaytarish.
Reja:
1. C# Funksiya parametrlari
2. Parametrli metodlar. Parametrsiz metodlar.
3.Masalalar yechish
C# dasturlash tilida konstruktor degan termin mavjud.
Konstruktor - bu sinf nomi bilan e’lon qilingan metod bo’lib, uning metod ko’rinishida faqat metod nomini va parametrlar ro'yxatini o'z ichiga oladi. U qaytarish turini o'z ichiga olmaydi. Quyidagi misolda metodga sinf konstruktori orqali murojaat qilish ko'rsatilgan.
Metod chaqiruvi shunday ko'rinadi:
Obyekt_nomi.Metod_nomi();
Shunday qilib, metodni konsolga chiqardik. Bunday holda, agar siz natijani saqlashingiz kerak bo'lsa, u holda siz metodning bajarilish natijasini o'zgaruvchiga qiymatlashingiz mumkin:
O’zgaruvchi = Obyekt_nomi.Metod_nomi();
Metod o'zgaruvchini emas va qiymat saqlanadigan xotirani emas, balki qiymatning o'zini oladi. Metod avtomatik ravishda metod qavslarida ko'rsatilgan nomlar bilan o'z o'zgaruvchilarini yaratadi.
Metod bu amallar ketma-ketligi sifatida bajariladi. Metod parametrlarni belgilash orqali chaqiruvchi koddan ma'lumot olishi va qaytish turini ko'rsatib, chiqishni chaqiruvchi kodga qaytarishi mumkin. Qaytish turi void metodi uchun aniqlanishi mumkin, bu metod hech qanday qiymat qaytarmaydi. Metod, shuningdek qiymatni, ref va out parametrlari orqali ham chiqarilishi mumkin.
Dasturlarni ishlab chiqishda kod miqdorini kamaytirish, uning o'qilishini yaxshilash va ushbu ko'rsatmalarni qayta ishlatishni osonlashtirish uchun ko'rsatmalarning ba'zi qatorlari takrorlanadi, ularni metodga birlashtirish mumkin.
Agar o'zgaruvchilar ba'zi qiymatlarni saqlasa, u holda metodlar ma'lum harakatlarni bajaradigan ko'rsatmalar to'plamini o'z ichiga oladi. Asosan, metod - bu ba'zi harakatlarni bajaradigan nomlangan kod blokidir.
Metod tanasida bir nechta qiymatlarni qaytarish mumkin. Qanday qilib bitta emas, ikkita qiymatni qaytarish mumkin? Agar qiymatlar bir xil turdagi bo'lsa, ularni massiv sifatida qaytarish mumkin, agar ular har xil turda bo'lsa, strukturadan foydalanish mumkin. Ammo undan ham yaxshiroq yo'l bor - bitta parametrni qaytarish qiymati sifatida qaytarish va boshqa parametrni parametrlardan biri orqali qaytarish mumkin.
C# o'zgaruvchilarni aniq turdagi yoki yashirin tur sifatida e'lon qilish imkonini beradi. Aniq turdagi o'zgaruvchilar xuddi e'lon qilingan tur kabi kiritish talab qilinadi, yashirin tur bu - kompilyator ularda saqlangan qiymatga qarab ishlash vaqtida turni aniqlaydi. C# da var kalit so'zi yashirin turdagi o'zgaruvchilarni e'lon qilish uchun ishlatiladi.
Agar kodning bir qismi ikki yoki undan ortiq marta takrorlansa, ko'rsatmalarni alohida metodga o'tkazish mantiqan to'g'ri bo’ladi.
“static” kalit so’zi bilan e’lon qilinadigan metodlar Statik metodlar deb ataladi.
Statik metodlar barcha obyektlar uchun umumiy bo'lgan va ma'lum bir obyektga bog'liq bo'lmagan xatti-harakatlarni belgilaydi. Statik metodlarga kirish uchun sinf/struktura nomi ham ishlatiladi.
Static kalit so'z nafaqat metodlarga, balki o'zgaruvchilarga ham tegishli bo'ladi, chunki bu kalit so'z eng ko’p metodlar bilan ishlatiladi.
Biz sinf metodiga kirmoqchi bo'lganimizda, ushbu sinfning obyektini yaratishimiz kerak. Ammo dastur ishga tushganda Main() metodi tizim faqat qaysi metodni chaqirish kerakligini topadi, lekin uni sinf yaratmasdan chaqirish mumkinligi statik kalit so'zi orqali chaqirish mumkin.
Statik metodlarga sinf yaratmasdan kirishingiz mumkin! Ammo darhol cheklov paydo bo'ladi - statik metod faqat ushbu metod ichida e'lon qilingan o'zgaruvchilardan foydalanishi mumkin yoki metoddan tashqarida, lekin ular statik bo'lishi kerak. Bunday metod statik bo'lmagan tashqi ma'lumotlarga kira olmaydi, chunki obyekt yaratilmagan va agar kimdir obyektni yaratgan bo'lsa, unda statik metod va ma'lumotlar unga taalluqli emas, shuning uchun ishga tushirilmagan ma'lumotlardan foydalanish mumkin emas.
Statik metodlar va o'zgaruvchilar tizim tomonidan avtomatik ravishda yaratiladi va obyektga emas, sinfga biriktiriladi. Ya'ni loyihaga tegishli va yangi obyekt ishga tushirilganda statik o'zgaruvchilar uchun xotira ajratilmaydi. Sinfdan qancha obyekt yaratishingizdan qat'iy nazar, har doim statik o'zgaruvchining faqat bitta versiyasi bo'ladi.
Statik o'zgaruvchilarni qanday ishga tushirish mumkin? Buni oddiy konstruktorda amalga oshirish mumkin, lekin keyin sinfning istalgan obyekti yaratilganda oʻzgaruvchi qayta oʻrnatiladi. Konstruktorda qandaydir tekshirishni amalga oshirishingiz mumkin.
Eng yaxshi metod - oddiy konstruktor kabi sinf nomi bilan bir xil, lekin static kalit so'zi bilan e'lon qilingan statik konstruktordan foydalanish:
static Shed()
{
ObjectNumber++;
}
Ushbu konstruktor quyidagi xususiyatlarga ega:
sinfdan yaratilgan obyektlar sonidan qat'i nazar, faqat bir marta bajariladi;
u parametrlarga ega bo'lishi mumkin emas, ya'ni uni qayta yuklash mumkin emas, bir nechta konstruktor yaratish mumkin bo'lmaydi va u faqat yuqorida aytib o'tilganidek bajariladi;
konstruktorda kirish modifikatorlari yo'q, chunki u tashqaridan chaqirilmaydi, u sinfda birinchi obyekt yaratilganda yoki statik sinf a'zosiga birinchi marta kirishda avtomatik ravishda chaqiriladi.
Dastur ishlatiladigan har qanday foydalanuvchi tomonidan aniqlanadigan funksiyalar e’lon qilinishi kerak. Metod (funksiyalar) qiymat qaytaruvchi va qiymat qaytarmaydigan ko‘rinishida bo‘ladi.
Parametrlarni qavs ichidagi metod nomidan keyin kiritish mumkin.
Sinf_nomi.Metod_nomi();
{
}
Bu yerda, qavslar bo'sh, ya'ni parametrlar yo'q. Figurali qavslar (“{ }”) - bu metodni bajaradigan kod (harakat). Agar metod tanasida bitta amal bajarilib o'tkazib yuborilishi mumkin bo'lsa ham metodning boshlanishi va oxirini belgilovchi “{ }”metodda hech qanday harakat bo'lmasa ham talab qilinadi.
Bu satr boshqa sinf metodidan chaqirishsa u quyidagicha bo'ladi:
Sinf_nomi.Metod_nomi(Parametrlar);
Agar metod biz uni chaqiradigan obyekt (sinf) da bo'lsa, chaqirish quyidagicha qisqartirish mumkin:
Metod_nomi(Parametrlar);
Agar xossa yoki sinf o'zgaruvchisiga kirayotgan bo'lsangiz, u holda xossa yoki o'zgaruvchining nomi ham to'liq yozilishi kerak:
Sinf_nomi.Xossa_nomi;
Ammo agar biz bir sinfga tegishli metoddan sinf xossasiga kirsak, u holda obyekt o'zgaruvchisini ko'rsatmasdan faqat xususiyat yoki o'zgaruvchining nomini yozishimiz kerak.
Main() metodi asosiy metod bo'lib, dastur o'z ishini aynan undan boshlaydi. Bu shuni anglatadiki, kamida bitta sinfda shunday nomli metod bo'lishi kerak, aks holda dasturni qayerdan boshlashi aniq bo'lmaydi. Main() metodi faylning boshida biror joyda bo'lishi shart emas va uni istalgan joyda joylashtirish mumkin, chunki ijro fayl boshidan oxirigacha emas, balki Main () dan boshlab, keyin esa qolgan amallar bajariladi.
Metod e’loni quyidagicha ko'rinadi:
modifikator qiymat_turi Funksiya_nomi(parametr_turi parametrlar, vergullar bilan ajratiladi)
{
//Kod
return Qiymat;
}
Kirish modifikatorlari allaqachon tanish bo'lgan public, protected va private bo'lishi mumkin, ular yordamida biz bu usul tashqi sinflar yoki vorislar uchun mavjud yoki yo'qligini aniqlashimiz mumkin, biz bu haqda hali gapirmaganmiz. Agar metod qiymatni qaytarmasa, void kalit so'zini ko'rsatish kerak. Agar metod parametrlarga ega bo'lmasa, qavs ichida hech narsa ko'rsatilishi shart emas.
Figurali qavslarda biz metod kodini yozishimiz mumkin va agar metod qiymatni qaytarishi kerak bo'lsa, u return kalit so'zidan keyin ko'rsatilishi kerak. Bu operator metod kodining istalgan joyida, hatto eng boshida ham bo'lishi mumkin, lekin siz bilishingiz kerakki, u metodni to'xtatib, qiymat qaytaradi. Agar usul qiymatni qaytarmasa yoki to'g'rirog'i voidni qaytarsa, u holda return ixtiyoriy, faqat metodni bekor qilish uchun ishlatish mumkin.
Do'stlaringiz bilan baham: |