Sobes.tech
Junior — Middle

GetHashCode metodu .NET-də lüğətin işləməsinə necə təsir edir?

sobes.tech Süni İntellekt

AI-dan cavab

.NET-də GetHashCode metodu obyektin hash kodunu almaq üçün istifadə olunur və bu, məsələn, Dictionary<TKey, TValue> kimi hash cədvəllərində tətbiq edilir.

Obyektə sözlükdə əlavə edərkən, əvvəlcə GetHashCode çağırılır və bu, saxlanılacaq səbət (bucket) müəyyən edir. Objekti axtararkən, sözlük sürətli giriş üçün hash kodundan istifadə edir.

Əhəmiyyətlidir ki:

  • Əgər iki obyekt bərabərdirsə (Equals metodu ilə), onların hash kodları uyğun olmalıdır.
  • Əgər hash kodları fərqlidirsə, obyektlər fərqli hesab olunur.

Yanlış GetHashCode tətbiqi, sözlüğün açarı tapa bilməməsinə səbəb ola bilər, hətta o orada olsa belə, və ya çox sayda toqquşma səbəbindən performansı azalda bilər.

Düzgün tətbiq nümunəsi:

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 şəkildə, GetHashCode sözlüğün düzgünlüyünə və səmərəliliyinə təsir edir.