#c# #.net
Вопрос:
Код:-
public Dictionarylt;string, Listlt;TestObjgt;gt; testDictionary = new Dictionarylt;string, Listlt;TestObjgt;gt;(); if (!testDictionary.ContainsKey(testObjId)) { TestObj testObj=new TestObj(testObjId); Listlt;VIDgt; testObjList= new Listlt;TestObjgt; { testObj }; testDictionary.Add(testObjId, testObjList); } else { testDictionary[testObjId].Add(new TestObj(testObjId)); }
Сценарий:-
- В большинстве случаев в списке будет только одна запись,что является пустой тратой ресурсов.
- В особом сценарии у нас было бы несколько пунктов в списке.
Нужна помощь в обработке сценария, в котором, если у нас есть только один элемент, то значение словаря должно быть обычным объектом, если у нас несколько элементов, то значение словаря должно быть списком элементов.
Комментарии:
1. Вы можете использовать
IListlt;TestObjgt;
в качестве типа значения. Затем реализуйте версиюIList
, оптимизированную для одной записи (например, для внутреннего хранения только одного экземпляра вместо массива). Затем добавьте в свой словарь либо «реальный» списокlt;gt;, либо свой собственный тип.2. Поместите все в список и обработайте случай, когда количество равно 1? Проверьте соответствие требованиям и правильность, прежде чем переходить к оптимизации для скорости/памяти.
3. Является
TestObj
ли тип ссылки или тип значения? Или это может быть и то, и другое?4. @Теодорзулиас,TestObj-это тип значения.
5. Не могли бы вы оценить эти два показателя? 1. Процент ключей, содержащих одно значение, и 2. среднее количество значений для ключей, содержащих несколько значений.