Junior — Middle
Como o método GetHashCode afeta o funcionamento do dicionário no .NET?
sobes.tech IA
Resposta da IA
O método GetHashCode no .NET é usado para obter o código hash de um objeto, que é aplicado em tabelas de dispersão, por exemplo, em dicionários (Dictionary<TKey, TValue>).
Quando adiciona um objeto ao dicionário, primeiro é chamado GetHashCode para determinar a caixa (bucket) onde será armazenado. Ao procurar um objeto, o dicionário usa o código hash para acesso rápido.
É importante que:
- Se dois objetos são iguais (de acordo com o método
Equals), seus códigos hash devem coincidir. - Se os códigos hash diferem, os objetos são considerados diferentes.
Uma implementação incorreta de GetHashCode pode fazer com que o dicionário não consiga encontrar uma chave, mesmo que ela exista, ou reduzir o desempenho devido a um grande número de colisões.
Exemplo de uma implementação correta:
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);
}
}
Assim, GetHashCode influencia a correção e eficiência do funcionamento do dicionário.