Пользовательская коллекция (generic) - C#
Формулировка задачи:
Решение проблемы требует создать коллекцию, которая внутри себя хранит элементы в List<>, если количество элементов <=5, и переключается на SortedList<> (элементы копируются в другую внутреннюю коллекцию)
Вопрос. Я правильно решил переопределять метод Add() для выполнения задачи или можно решить ее проще? Ну и при таком коде, после добавления в коллекцию UserCollection элементов и перебора их с помощью foreach выводится только первые пять элементов. Как коллекция List<T> взаимодействует с SortedList<int, T>?
Метод тоже сыроват, правильно ли я думаю что надо вводить индекс, начинать его с -1, т.е добавлять элементы в коллекции "по классике"?
class UserCollection<T> : ICollection<T>
{
List<T> elements = new List<T>();
SortedList<int, T> sortedList = new SortedList<int, T>();
public void Add(T items)
{
int position1 = elements.Count() + 1;
int position2 = sortedList.Count() + 1;
if (position1 <= 5)
{
elements.Add(items);
}
else if (position1 == 6)
{
//int count = 0;
foreach (T el in elements)
{
//count += 1;
sortedList.Add(sortedList.Count()+10, el);
}
sortedList.Add(sortedList.Count()+10, items);
}
else if (position1 > 6)
{
sortedList.Add(position2, items);
}
// Реализованы методы для ICollection<T>
}
}Решение задачи: «Пользовательская коллекция (generic)»
textual
Листинг программы
++position1