Junior — Middle
Kāpēc ir svarīgi pārrakstīt metodi GetHashCode klasēs?
sobes.tech AI
Atbilde no AI
GetHashCode metodes pārrakstīšana ir svarīga, lai pareizi darbotos objekti hash-bāzētajās kolekcijās, piemēram, Dictionary, HashSet un citās.
Iemesli:
GetHashCodeatgriež skaitlisku vērtību, kas tiek izmantota, lai ātri atrastu objektu hash-tabulās.- Ja divi objekti tiek uzskatīti par vienādiem (saskaņā ar
Equalsmetodi), tiem jāatgriež tas pats hash kods, lai kolekcijas tos pareizi apstrādātu. - Ja
GetHashCodenetiek pārrakstīts kopā arEquals, objekti var tikt nepareizi salīdzināti vai dublēti kolekcijās.
Piemērs:
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);
}
}
Šādā veidā GetHashCode pārrakstīšana nodrošina saskaņotību ar Equals un pareizu objektu darbību hash struktūrās.