У меня есть объект, который я хочу использовать для поиска других объектов. Я буду использовать Dictionary<TKey, TValue>()
.Выбор хорошего словарного ключа
Ключевой объект имеет две строки, которые однозначно идентифицируют его, скажем KeyObj.Str1
и KeyObj.Str2
.
Что вы рекомендуете использовать в качестве ключа для словаря?
1: Конкатенация строк.
Dictionary<String, TValue>();
Key = KeyObj.Str1:KeyObj.Str2; ("somestring:anotherstring")
2: Уникальное целое число для каждого объекта для его идентификации?
Dictionary<int, TValue>();
KeyObj.ID = _nextID++;
Key = KeyObj.ID;
3: Ссылка на объект.
Dictionary<KeyObj, TValue>();
Key = KeyObj;
Вариант 3 будет самым простым, но кажется, что было бы неэффективно индексировать словарь на основе эталонных значений.
Если ключевой объект содержит единственную уникальную строку, очевидным выбором будет использование этого, но наличие двух строк, единственных в комбинации, затрудняет задачу.
Класс, который я использую, более сложный, чем я описал в примере ... Я упростил его, чтобы его было ясно. Я не хочу, чтобы это была структура. –