Junior — Middle
Zašto se u .NET klasi prepisuju metode GetHashCode i Equals?
sobes.tech АИ
Одговор од АИ
U .NET-u, metode GetHashCode i Equals se redefinišu kako bi se obezbedilo ispravno poređenje objekata i pravilno funkcionisanje sa kolekcijama kao što su rečnici (Dictionary) i skupovi (HashSet).
- Equals određuje kada se dva objekta smatraju jednakim u smislu.
- GetHashCode vraća numerički kod koji se koristi za brzo pretraživanje objekta u hash tabelama.
Ako redefinišete samo Equals, ali ne i GetHashCode, objekti mogu nepravilno da funkcionišu u hash kolekcijama. Ove metode se obično redefinišu zajedno kako bi se osigurala konzistentnost: ako Equals vraća true za dva objekta, njihov GetHashCode treba da vraća istu vrednost.
Primer:
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);
}
}