Добавление объекта IList к конкретному индексу

База данных нашего Клиента возвращает ряд цен в массиве, но они иногда не включают все цены, т.е. у них есть недостающие элементы в их массиве. Мы возвращаем то, что мы находим как IList, который работает отлично, когда мы получаем содержание от базы данных. Однако мы испытываем затруднения при установке элементов в надлежащем положении в массиве.

Действительно ли возможно создать IList, затем добавляют элемент в особом положении в IList?

var myList = new List<Model>();
var myModel = new Model();
myList[3] = myModel;  // Something like what we would want to do
9
задан Zachary Scott 1 June 2010 в 04:30
поделиться

3 ответа

Списки растут динамически, чтобы вместить элементы по мере их добавления. Вам придется инициализировать список с заранее определенным размером. Самый простой способ, который я могу придумать, это:

var myList = new Model[100].ToList();

Это даст вам список со 100 элементами, все нулевые. Затем вы можете присвоить значение myList[3].

Обратите внимание, что в вашем коде вы пытаетесь создать IList, что невозможно - вам нужен конкретный тип (например, List), а не интерфейс.

3
ответ дан 4 December 2019 в 07:47
поделиться

Используйте IList.Insert(int index,T item)

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, то элемент добавляется в список.

В коллекциях смежных элементов, таких как списки, элементы, следующие за точкой вставки, перемещаются вниз, чтобы разместить новый элемент. Если коллекция индексирована, то индексы перемещаемых элементов также обновляются. Это поведение не применяется к коллекциям, в которых элементы концептуально сгруппированы в ведра, таким как хэш-таблица.

18
ответ дан 4 December 2019 в 07:47
поделиться

Использование метода IList.Insert.

7
ответ дан 4 December 2019 в 07:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: