Может ли словарь C# иметь два разных типа значений(обычный объект и список объектов)?

#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. В большинстве случаев в списке будет только одна запись,что является пустой тратой ресурсов.
  2. В особом сценарии у нас было бы несколько пунктов в списке.

Нужна помощь в обработке сценария, в котором, если у нас есть только один элемент, то значение словаря должно быть обычным объектом, если у нас несколько элементов, то значение словаря должно быть списком элементов.

Комментарии:

1. Вы можете использовать IListlt;TestObjgt; в качестве типа значения. Затем реализуйте версию IList , оптимизированную для одной записи (например, для внутреннего хранения только одного экземпляра вместо массива). Затем добавьте в свой словарь либо «реальный» списокlt;gt;, либо свой собственный тип.

2. Поместите все в список и обработайте случай, когда количество равно 1? Проверьте соответствие требованиям и правильность, прежде чем переходить к оптимизации для скорости/памяти.

3. Является TestObj ли тип ссылки или тип значения? Или это может быть и то, и другое?

4. @Теодорзулиас,TestObj-это тип значения.

5. Не могли бы вы оценить эти два показателя? 1. Процент ключей, содержащих одно значение, и 2. среднее количество значений для ключей, содержащих несколько значений.