Sobes.tech
Junior — Middle

Kāda ir funkcija metode GetHashCode, lietojot vārdnīcu vai hash kolekciju?

sobes.tech AI

Atbilde no AI

Metode GetHashCode spēlē galveno lomu, izmantojot vārdnīcas (Dictionary) un citas hash kolekcijas C# valodā. Tā atgriež veselu skaitli (hash kodu), kas tiek izmantots, lai ātri noteiktu objekta atrašanās vietu hash tabulā.

Kad pievienojat objektu vārdnīcai, vispirms tiek izsaukts GetHashCode, lai noteiktu grozu (bucket), kurā tiks ievietots elements. Meklējot elementu pēc atslēgas, arī vispirms tiek aprēķināts hash kods, lai ātri atrastu pareizo grozu, un pēc tam tiek izsaukts Equals, lai veiktu precīzu salīdzinājumu.

Svarīgi, lai:

  • Ja divi objekti ir vienādi (Equals atgriež true), to GetHashCode ir jābūt vienādām vērtībām.
  • Labāk sadalīti hash kodi samazina sadursmju skaitu un uzlabo veiktspēju.

Piemērs pārdefinēšanai:

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