Junior — Middle
Kāpēc .NET klasē tiek pārrakstīti metodes GetHashCode un Equals?
sobes.tech AI
Atbilde no AI
.NET platformā, GetHashCode un Equals metodes pārdefinē, lai nodrošinātu pareizu objektu salīdzināšanu un pareizu darbību ar kolekcijām, piemēram, vārdnīcām (Dictionary) un kopām (HashSet).
- Equals nosaka, kad divi objekti tiek uzskatīti par vienādiem pēc būtības.
- GetHashCode atgriež skaitlisko kodu, kas tiek izmantots, lai ātri atrastu objektu hash tabulās.
Ja pārdefinējat tikai Equals, bet ne GetHashCode, objekti var nedarboties pareizi hash kolekcijās. Parasti šīs metodes pārdefinē kopā, lai nodrošinātu saskaņotību: ja Equals atgriež true diviem objektiem, to GetHashCode arī jābūt vienādām vērtībām.
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);
}
}