1-Ma’ruza Mavzu: Mobil operatsion tizimlarning rivojlanish tarixi


Download 140.08 Kb.
bet3/6
Sana09.02.2023
Hajmi140.08 Kb.
#1180454
1   2   3   4   5   6
Bog'liq
DT 12-mavzu

class Person

{

public object Id { get;}

public string Name { get;}

public Person(object id, string name)

{

Id = id;

Name = name;

}

}

Keyinchalik bu sinf dasturda foydalanuvchilarni yaratish uchun ishlatilishi mumkin:

Person tom = new Person(546, "Tom");

Person bob = new Person("abc123", "Bob");

int tomId = (int)tom.Id;

string bobId = (string) bob.Id;

Console.WriteLine(tomId); // 546

Console.WriteLine(bobId); // abc123

Har bir narsa ajoyib ishlayotganga o'xshaydi, lekin bu yechim juda maqbul emas. Gap shundaki, bu holda biz jamlash (boxing) va yoyish (unboxing) kabi hodisalarga duch kelamiz.

Shunday qilib, int tipidagi qiymat konstruktorga o'tkazilganda, bu qiymat Object turiga to'planadi:

Person tom = new Person(546, "Tom");

// int qiymatlarini Object turiga joylashtirish

Ma'lumotni int turdagi o'zgaruvchiga qaytarish uchun siz quyidagilarni ochishingiz kerak:

int tomId = (int) tom.Id; // int turiga ochish

Jamlash(boxing) qiymat turidagi ob'ektni (masalan, int) object turiga aylantirishni o'z ichiga oladi. Qadoqlashda umumiy tilning ish vaqti (CLR) qiymatni System.Object tipidagi ob'ektga jamlab oladi va uni boshqariladigan heapda saqlaydi. Boshqa tomondan, yoyish (unboxing) object tipidagi ob'ektni qiymat turiga aylantirishni o'z ichiga oladi.

Jamlash va yoyish unumdorlikni pasaytiradi, chunki tizim kerakli o'zgarishlarni amalga oshirishi kerak.

Bundan tashqari, yana bir muammo bor - turdagi xavfsizlik muammosi. Shunday qilib, agar biz shunday yozsak, ish vaqti xatosiga duch kelamiz:

Person tom = new Person(546, "Tom");


Download 140.08 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6




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