Junior — Middle
Какви методи могат да се използват за избягване на ограниченията по размер или ограниченията при използване на ключ в речник?
sobes.tech AI
Отговор от AI
В C# речниците (Dictionary<TKey, TValue>) имат ограничения върху типовете ключове и техния размер, например ключът трябва да бъде хешируем и да има правилно реализирани методи GetHashCode и Equals.
За да избегнете ограниченията по размер или тип на ключа, можете:
- Да използвате съставни ключове, например, да създадете клас или структура, която обединява няколко стойности, и да реализирате за нея правилните методи
GetHashCodeиEquals. - Да преобразувате големи или сложни ключове в по-компактни представяния, например, сериализирайки обекта в низ или използвайки хеш-функция.
- Да използвате специализирани колекции или структури от данни, ако стандартният речник не е подходящ.
Пример за съставен ключ:
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";