База данных нашего Клиента возвращает ряд цен в массиве, но они иногда не включают все цены, т.е. у них есть недостающие элементы в их массиве. Мы возвращаем то, что мы находим как IList, который работает отлично, когда мы получаем содержание от базы данных. Однако мы испытываем затруднения при установке элементов в надлежащем положении в массиве.
Действительно ли возможно создать IList, затем добавляют элемент в особом положении в IList?
var myList = new List<Model>();
var myModel = new Model();
myList[3] = myModel; // Something like what we would want to do
Списки растут динамически, чтобы вместить элементы по мере их добавления. Вам придется инициализировать список с заранее определенным размером. Самый простой способ, который я могу придумать, это:
var myList = new Model[100].ToList();
Это даст вам список со 100 элементами, все нулевые. Затем вы можете присвоить значение myList[3].
Обратите внимание, что в вашем коде вы пытаетесь создать IList
, что невозможно - вам нужен конкретный тип (например, List
), а не интерфейс.
Используйте IList
IList<string> mylist = new List<string>(15);
mylist.Insert(0, "hello");
mylist.Insert(1, "world");
mylist.Insert(15, "batman"); // This will throw an exception.
Из MSDN
Если индекс равен количеству элементов в IList, то элемент добавляется в список.
В коллекциях смежных элементов, таких как списки, элементы, следующие за точкой вставки, перемещаются вниз, чтобы разместить новый элемент. Если коллекция индексирована, то индексы перемещаемых элементов также обновляются. Это поведение не применяется к коллекциям, в которых элементы концептуально сгруппированы в ведра, таким как хэш-таблица.