Sobes.tech
Junior — Middle

რა ნაბიჯები უნდა გადაიდგას საკუთარი კლასი როგორც გასაღები კოლექციაში?

sobes.tech AI

პასუხი AI-სგან

C# dilində Dictionary<TKey, TValue> içində öz sinfinizi açar kimi istifadə etmək üçün, açarların düzgün müqayisəsini və onların hash kodlarının hesablanmasını təmin etmək lazımdır. Bunu etmək üçün:

  1. Equals(object obj) metodunu yenidən yazın ki, sinfinizin obyektlərini əhəmiyyətli sahələr üzrə düzgün müqayisə etsin.
  2. GetHashCode() metodunu yenidən yazın ki, bərabər hesab olunan obyektlər eyni hash koduna sahib olsun.

Misal:

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public override bool Equals(object obj)
    {
        if (obj is Person other)
        {
            return Name == other.Name && Age == other.Age;
        }
        return false;
    }

    public override int GetHashCode()
    {
        return HashCode.Combine(Name, Age);
    }
}

Alternativ olaraq, IEqualityComparer<T> interfeysini implementasiya edə və onu sözlük konstruktoruna verə bilərsiniz, əgər sinfi dəyişmək istəmirsinizsə.