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:
Equalsmeetod oleks üle kirjutatud nii, et loogiliselt võrdsed võtmed loetakse võrdsed.GetHashCodemeetod 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);
}
}