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.