Sobes.tech
Junior — Middle

GetHashCode metodunun sözlük veya karma koleksiyonu kullanırken rolü nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

GetHashCode yöntemi, C#'ta sözlükler (Dictionary) ve diğer karma koleksiyonlar kullanılırken önemli bir rol oynar. Bu yöntem, nesnenin konumunu hızlıca belirlemek için kullanılan tam sayı değeri (karma kodu) döndürür.

Bir nesneyi sözlüğe eklerken, önce GetHashCode çağrılır ve öğenin yerleştirileceği sepet (bucket) belirlenir. Bir anahtar kullanılarak öğe aranırken de önce karma kodu hesaplanır, böylece doğru sepet hızlıca bulunur ve sonra tam karşılaştırma için Equals çağrılır.

Önemlidir ki:

  • Eğer iki nesne eşitse (Equals true döner), o zaman GetHashCode değerleri de aynı olmalıdır.
  • İyi dağıtılmış karma kodları, çakışma sayılarını azaltır ve performansı artırır.

Yeniden tanımlama ö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);
    }
}