Strukturalar



Download 27,78 Kb.
bet1/2
Sana29.03.2022
Hajmi27,78 Kb.
#516496
  1   2
Bog'liq
СТРУКТУРАLAR


STRUKTURALAR

Sinflar bilan bir qatorda strukturalar C# da dasturchining o‘z ma'lumotlar turlarini yaratishning yana bir usulini taqdim etadi. Bundan tashqari, int, double va boshqalar kabi ko'plab primitiv turlar mohiyatan strukturadir.


Strukturani aniqlash


struct kalit so'zi strukturani aniqlash uchun ishlatiladi :
struct struktura_nomi
{
// struktura elementlari
}
struct so'zidan keyin strukturaning nomi keladi, so'ngra strukturaning elementlari - maydonlar, usullar va boshqalar figurali qavslar ichida joylashtiriladi.
Masalan, Person deb ataladigan va insonni ifodalovchi strukturani aniqlaymiz:

struct Person


{
}
Sinflar singari, strukturalar holatni maydonlar (o'zgaruvchilar) ko'rinishida saqlashi va usullar shaklida xatti-harakatlarni aniqlashi mumkin. Masalan, Person strukturasiga bir nechta maydon va usul qo'shamiz:

struct Person


{
public string name;
public int age;
public void Print()
{
Console.WriteLine($"Ism: {name} Yoshi: {age}");
}
}
Bunday holda, ikkita o'zgaruvchi aniqlanadi - mos ravishda Personning ismi va yoshini saqlash uchun name va age. Konsolga Person haqidagi ma'lumotlarni chiqarish uchun esa Print usuli yaratildi.
Xuddi sinflarda bo'lgani kabi, strukturaning funktsional imkoniyatlariga - maydonlar, usullar va strukturaning boshqa tarkibiy qismlariga murojaat qilish uchun nuqta belgisi qo'llaniladi - struktura ob'ektidan keyin nuqta qo'yiladi, so'ngra struktura komponenti ko'rsatiladi:

ob’ekt.struktura_maydoni


ob’ekt. struktura_metodi(metod_parametrlari)
Struktura ob'ektini yaratish
Konstruktor yordamida initsializatsiyalash
Strukturadan foydalanish uchun uni ishga tushirish kerak. Struktura ob'yektlarini yaratishni ishga tushirish uchun, sinflarda bo'lgani kabi, konstruktorga new operatori bilan chaqirishdan foydalaniladi. Struktura kodida hech qanday konstruktor aniqlanmagan bo'lsa ham, u kamida bitta konstruktorga ega - kompilyator tomonidan yaratilgan standart konstruktor. Ushbu konstruktor hech qanday parametrlarni olmaydi va standart qiymatlarga ega struktura ob'ektini yaratadi.

new struktura_nomi();


Masalan, standart konstruktor yordamida Person struct obyektini yaratamiz:
Person tom = new Person(); // konstruktorni chaqirish
// yoki
// Person tom = new();
tom.name = "Tom"; // name maydoni qiymatini o‘zgartiramiz
tom.Print(); // Ism: Tom Yoshi: 0
struct Person
{
public string name;
public int age;
public void Print()
{
Console.WriteLine($"Ism: {name} Yoshi: {age}");
}
}
Bunday holda, tom ob'ekti yaratiladi. Uni yaratish uchun standart konstruktor chaqiriladi, u o'z maydonlari uchun standart qiymatlarni o'rnatadi. Raqamli ma'lumotlar uchun bu qiymat 0 ga teng, shuning uchun maydon 0 ageqiymatiga ega bo'ladi. strings uchun nullbu qiymat hech qanday qiymatni bildirmaydi. Ammo keyin, agar maydonlar mavjud bo'lsa (va bu holda publicular mavjud modifikatorga ega bo'lganligi sababli), biz ularning qiymatlarini o'zgartirishimiz mumkin. Shunday qilib, bu erda maydonga name"Tom" qatori berilgan. Shunga ko'ra, usulni bajarishda Print()biz quyidagi konsol chiqishini olamiz:

Ism: Tom Yoshi: 0


Maydonni to'g'ridan-to'g'ri initsializatsiya qilish
Agar strukturaning barcha maydonlari mavjud bo'lsa (Person strukturasining umumiy o'zgartiruvchiga ega bo'lgan maydonlarida bo'lgani kabi ), u holda konstruktorni chaqirmasdan strukturani ishga tushirish mumkin. Bunday holda, siz maydon qiymatlarini olishdan va strukturaning usullarini chaqirishdan oldin strukturaning barcha maydonlariga qiymatlarni belgilashingiz kerak. Masalan:
Person tom; // konstruktor chaqirilmaydi
// maydon initsializatsiyasi
tom.name = "Sam";
tom.age = 37;
tom.Print(); // Ism: Sam Yoshi: 37
struct Person
{
public string name;
public int age;
public void Print()
{
Console.WriteLine($"Ism: {name} Yoshi: {age}");
}
}
Maydonni initsializatsiyalash
Shuni ta'kidlash kerakki, C# 10 dan boshlab, biz strukturaning maydonlarini aniqlashda to'g'ridan-to'g'ri initsializatsiyalash mumkin (C# 10 dan oldin bu mumkin emas edi):

Person tom = new Person();


tom.Print(); // Ism:Tom Yoshi: 1
struct Person
{
// C#10 dan boshlab maydonni initsializatsiyalash mumkin
public string name = "Tom";
public int age = 1;
public void Print() =>Console.WriteLine($"Ism: {name} Yoshi: {age}");
}
Biroq, bu holatda ham, standart qiymatlarga qaramasdan, agar biz ushbu qiymatlardan foydalanmoqchi bo'lsak, konstruktor chaqirilishi kerak.



Download 27,78 Kb.

Do'stlaringiz bilan baham:
  1   2




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish