Sobes.tech
Junior — Middle

Kuidas on rakendatud meetod Equals sõnastikega töötamisel ja kuidas see mõjutab andmete töötlemist?

sobes.tech AI

Vastus AI-lt

C# keeles kasutatakse meetodit Equals objektide võrdlemiseks võrdsete. Tõrkeid sõnastikes (Dictionary<TKey, TValue>) võrreldakse võtmeid Equals ja GetHashCode meetodite abil.

See tähendab, et sõnastiku korrektseks toimimiseks on oluline, et:

  • Equals meetod oleks üle kirjutatud nii, et loogiliselt võrdsed võtmed loetakse võrdsed.
  • GetHashCode meetod tagastaks sama väärtuse võrdsed võtmed.

Kui Equals on valesti implementeeritud, võib sõnastik mitte leida olemasolevaid võtmeid või lubada duplikaate, mis põhjustab vigu otsingul, lisamisel või eemaldamisel.

Näide Equals ja GetHashCode meetodite üle kirjutamisest:

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