Sobes.tech
Junior — Middle

GetHashCode yöntemi .NET'te sözlüklerin çalışma şeklini nasıl etkiler?

sobes.tech yapay zeka

AI'dan gelen yanıt

.NET'teki GetHashCode metodu, nesnenin karma kodunu almak için kullanılır ve bu, örneğin, sözlüklerde (Dictionary<TKey, TValue>) kullanılan karma tablolarında uygulanır.

Bir nesneyi sözlüğe eklerken, önce GetHashCode çağrılır ve bu, saklanacağı sepeti (bucket) belirler. Nesne aranırken, sözlük hızlı erişim için karma kodunu kullanır.

Önemlidir ki:

  • İki nesne eşitse (Equals metodu ile), onların karma kodları da aynı olmalıdır.
  • Karma kodları farklıysa, nesneler farklı kabul edilir.

Yanlış GetHashCode uygulaması, sözlüğün anahtarı bulamamasına neden olabilir, hatta büyük çakışma sayısı nedeniyle performansı düşürebilir.

Doğru bir uygulama örneği:

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

Bu şekilde, GetHashCode sözlüğün doğruluğu ve verimliliği üzerinde etkili olur.