将IList项添加到特定索引号

Zac*_*ott 9 c# ilist

我们客户的数据库在数组中返回一组价格,但有时它们不包括所有价格,即它们的数组中缺少元素.我们返回我们发现的IList,当我们从数据库中检索内容时,它非常有用.但是,我们很难将元素设置在数组中的适当位置.

是否可以创建IList然后在IList中的特定位置添加元素?

var myList = new List<Model>();
var myModel = new Model();
myList[3] = myModel;  // Something like what we would want to do
Run Code Online (Sandbox Code Playgroud)

thi*_*eek 18

使用 IList<T>.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.
Run Code Online (Sandbox Code Playgroud)

来自MSDN

如果index等于IList中的项目数,则将项目附加到列表中.

在连续元素(如列表)的集合中,插入点后面的元素向下移动以容纳新元素.如果集合已编制索引,则还会更新已移动元素的索引.此行为不适用于元素在概念上分组为存储区的集合,例如哈希表.


Mat*_*ton 3

列表会动态增长以容纳添加的项目。您必须使用预定义的大小来初始化列表。我能想到的最简单的方法是:

var myList = new Model[100].ToList();
Run Code Online (Sandbox Code Playgroud)

这将为您提供一个包含 100 个项目的列表,全部为空。然后您可以自由地为 myList[3] 分配一个值。

请注意,在您的代码中,您试图实例化 一个IList<Model>这是不可能的 - 您需要一个具体类型(如List<Model>)而不是一个接口。