Sobes.tech
Junior — Middle

Kā ietekmē GetHashCode metode .NET vārdnīcas darbību?

sobes.tech AI

Atbilde no AI

.NET sistēmā GetHashCode metode tiek izmantota objekta hash-koda iegūšanai, kas tiek piemērots hash tabulās, piemēram, vārdnīcās (Dictionary<TKey, TValue>).

Kad pievienojat objektu vārdnīcai, vispirms tiek izsaukta GetHashCode, lai noteiktu grozu (bucket), kur tas tiks glabāts. Meklējot objektu, vārdnīca izmanto hash-kodu, lai nodrošinātu ātru piekļuvi.

Svarīgi, lai:

  • Ja divi objekti ir vienādi (saskaņā ar Equals metodi), to hash-kodiem jābūt vienādiem.
  • Ja hash-kodi atšķiras, objekti tiek uzskatīti par dažādiem.

Nepareiza GetHashCode implementācija var novest pie tā, ka vārdnīca nevarēs atrast atslēgu, pat ja tā ir, vai arī samazinās veiktspēju, jo ir daudz kolīziju.

Pareizas implementācijas piemērs:

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

Tādējādi GetHashCode ietekmē vārdnīcas pareizību un efektivitāti.