Junior — Middle
Jak se lze vyhnout omezení velikosti nebo omezení při použití klíče ve slovníku?
sobes.tech AI
Odpověď od AI
V C#, slovníky (Dictionary<TKey, TValue>) mají omezení na typy klíčů a jejich velikost, například klíč musí být hashovatelný a mít správně implementované metody GetHashCode a Equals.
Chcete-li se vyhnout omezením velikosti nebo typu klíče, můžete:
- Použít složené klíče, například vytvořit třídu nebo strukturu, která kombinuje několik hodnot, a pro ni správně implementovat metody
GetHashCodeaEquals. - Převést velké nebo složité klíče na kompaktnější reprezentace, například serializovat objekt do řetězce nebo použít hashovací funkci.
- Použít specializované kolekce nebo datové struktury, pokud standardní slovník není vhodný.
Příklad složeného klíče:
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";