1. System. Object sinfi va uning usullari Umumlashtirish Umumlashganlarning cheklovlari


Ob'ekt turini va GetType usulini olish


Download 48.75 Kb.
bet3/11
Sana19.06.2023
Hajmi48.75 Kb.
#1600338
1   2   3   4   5   6   7   8   9   10   11
Bog'liq
11 System Object asosiy tayanch sinfidan hosilaviy sinflarni yaratish

Ob'ekt turini va GetType usulini olish
GetType usuli ushbu ob'ekt turini olish imkonini beradi:
Person person = new Person { Name = "Tom" };
Console.WriteLine(person.GetType()); // Person

Bu usul Type ob'ektini, ya'ni ob'ekt turini qaytaradi.


typeof kalit so'zi bilan biz sinf turini olamiz va uni ob'ekt turi bilan taqqoslaymiz. Va agar bu ob'ekt Client turini ifodalasa, biz ma'lum harakatlarni bajaramiz.
object person = new Person { Name = "Tom" };
if (person.GetType() == typeof(Person))
Console.WriteLine("Bu haqiqatan ham Person sinfidir ");

Bundan tashqari, Object sinfi barcha sinflar uchun asosiy tip bo'lganligi sababli, biz istalgan turdagi ob'ektni object tipidagi o'zgaruvchiga belgilashimiz mumkin. Biroq, bu o'zgaruvchi uchun GetType usuli hali ham o'zgaruvchiga tegishli turni qaytaradi. Ya'ni, bu holda, Shaxs tipidagi ob'ekt.


ToString, Equals, GetHashCode usullaridan farqli o'laroq, GetType usuli bekor qilinmaydi.
Equals usuli
Equals usuli ikkita ob'ektni tenglik uchun solishtirish imkonini beradi:
class Person
{
public string Name { get; set; }
public override bool Equals(object obj)
{
if (obj.GetType() != this.GetType()) return false;
Person person = (Person)obj;
return (this.Name == person.Name);
}
}

Equals usuli har qanday turdagi ob'ektni parametr sifatida qabul qiladi, agar ular bir xil sinf ob'ektlari bo'lsa, biz uni joriy ob'ektga o'tkazamiz. Keyin ism bo'yicha taqqoslaymiz. Agar nomlar teng bo'lsa, biz true ni qaytaramiz, bu esa ob'ektlar teng ekanligini aytadi. Biroq, agar kerak bo'lsa, usulni amalga oshirish yanada murakkablashtirilishi mumkin, masalan, agar mavjud bo'lsa, uni bir nechta xususiyatlar bilan solishtirish mumkin.


Usulni qo'llash:
Person person1 = new Person { Name = "Tom" };
Person person2 = new Person { Name = "Bob" };
Person person3 = new Person { Name = "Tom" };
bool p1Ep2 = person1.Equals(person2); // false
bool p1Ep3 = person1.Equals(person3); // true
Va agar siz ikkita murakkab ob'ektni taqqoslashingiz kerak bo'lsa, bu holatda bo'lgani kabi, standart == operatsiyasidan ko'ra Equals usulidan foydalangan ma'qul.



Download 48.75 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10   11




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