Sobes.tech
Junior — Middle

Өз классыңызды сөздүк түрүндөгү коллекцияда ачкыч катары колдонуу үчүн кандай кадамдар керек?

sobes.tech AI

AIден жооп

C# тилинде Dictionary<TKey, TValue> ичинде өз классыңарды ачкыч катары колдонуу үчүн, ачкычтардын туура салыштырылышын жана алардын хэш-коддорунун эсептелишин камсыз кылыш керек. Бул үчүн:

  1. Equals(object obj) методун кайра жазып, ал классыңыздын объекттерин маанилүү талаалар боюнча туура салыштырып турушу керек.
  2. GetHashCode() методун кайра жазып, бирдей деп эсептелген объекттердин бирдей хэш-коду болушу керек.

Мисал:

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);
    }
}

Альтернативдүү, IEqualityComparer<T> интерфейсин ишке ашырып, аны сөздүктүн куруучусуна өткөрсөңүз болот, эгер классты өзгөртүүнү каалабасаныз.