Junior — Middle
Kako izbeći ograničenje veličine ili ograničenje pri korišćenju ključa u rečniku?
sobes.tech АИ
Одговор од АИ
U C# slovarima (Dictionary<TKey, TValue>) postoje ograničenja na tipove ključeva i njihovu veličinu, na primer, ključ mora biti hashabilan i imati pravilno implementirane metode GetHashCode i Equals.
Da biste izbegli ograničenja u veličini ili tipu ključa, možete:
- Koristiti složene ključeve, na primer, kreirati klasu ili strukturu koja kombinuje više vrednosti i za nju implementirati ispravne metode
GetHashCodeiEquals. - Pretvoriti velike ili složene ključeve u kompaktije prikaze, na primer, serijalizovati objekat u niz ili koristiti hash funkciju.
- Koristiti specijalizovane kolekcije ili strukture podataka ako standardni slovar nije prikladan.
Primer složenog ključa:
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";