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 (
Equalsmetodu 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.