Sobes.tech
Junior — Middle

Bir sözlük türündeki koleksiyonda kendi sınıfınızı anahtar olarak kullanmak için hangi adımlar izlenmelidir?

sobes.tech yapay zeka

AI'dan gelen yanıt

C# dilinde Dictionary<TKey, TValue> içinde anahtar olarak kendi sınıfınızı kullanmak istiyorsanız, anahtarların doğru karşılaştırılmasını ve hash kodlarının hesaplanmasını sağlamalısınız. Bunun için:

  1. Equals(object obj) metodunu, sınıfınızdaki nesneleri anlamlı alanlar üzerinden doğru şekilde karşılaştıracak şekilde geçersiz kılın.
  2. GetHashCode() metodunu, eşit kabul edilen nesnelerin aynı hash koduna sahip olmasını sağlayacak şekilde geçersiz kılın.

Örnek:

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

Alternatif olarak, IEqualityComparer<T> arayüzünü implemente edip, bunu sözlüğün yapıcıya geçirerek kullanabilirsiniz, eğer sınıfı değiştirmek istemiyorsanız.