Junior — Middle
Que métodos podem ser usados para evitar limitações de tamanho ou restrições ao usar uma chave em um dicionário?
sobes.tech IA
Resposta da IA
Em C#, os dicionários (Dictionary<TKey, TValue>) têm restrições nos tipos de chaves e no seu tamanho, por exemplo, a chave deve ser hashável e ter métodos GetHashCode e Equals corretamente implementados.
Para evitar restrições de tamanho ou tipo de chave, pode-se:
- Utilizar chaves compostas, por exemplo, criar uma classe ou estrutura que combine vários valores e implementar para ela métodos
GetHashCodeeEqualscorretos. - Converter chaves grandes ou complexas em representações mais compactas, por exemplo, serializar o objeto em uma string ou usar uma função hash.
- Utilizar coleções ou estruturas de dados especializadas se o dicionário padrão não for adequado.
Exemplo de chave composta:
struct CompositeKey
{
public int Id;
public string Name;
public override bool Equals(object obj) => obj is CompositeKey other && Id == other.Id && Name == other.Name;
public override int GetHashCode() => HashCode.Combine(Id, Name);
}
var dict = new Dictionary<CompositeKey, string>();
dict[new CompositeKey { Id = 1, Name = "Test" }] = "Value";