• Equals usuli
  • Ob'ekt turini va GetType usulini olish




    Download 70,5 Kb.
    bet3/12
    Sana18.05.2024
    Hajmi70,5 Kb.
    #241174
    1   2   3   4   5   6   7   8   9   ...   12
    Bog'liq
    22-09

    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 70,5 Kb.
    1   2   3   4   5   6   7   8   9   ...   12




    Download 70,5 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Ob'ekt turini va GetType usulini olish

    Download 70,5 Kb.