C#List.Insert错过了一些索引

时间:2015-04-12 10:35:31

标签: c# list insert

我有List<string>名为stringList。我试图在列表中插入一些字符串。首先,我使用循环为我的内容生成“空位”。

for (int i = 0; i < 60; i++)
        {
            stringList.Add(null);
        }

然后我使用stringlist.Insert(index, element)在指定索引处的List中插入一个元素。接下来我想看看每个元素是否都被正确读取。

这是我的stringList

list

每个元素都已正确读取,但错过了三个索引。在第3个索引应该是第6个,第4个 - &gt; 7日等等。

我不知道如何解决这个问题。

这是代码片段(对于索引3,4,5),程序读取元素并将其插入列表中。

case "yweather:wind":

stringList.Insert(3, reader["speed"]);//3
break;

case "yweather:atmosphere":

stringList.Insert(4, reader["pressure"]);//4
stringList.Insert(5, reader["rising"]);//5
stringList.Insert(6, reader["humidity"]);//6

break;

抱歉我的英文。

2 个答案:

答案 0 :(得分:1)

List.Insert会在给定索引的列表中添加一个元素,并移动以下所有元素

您可能只想设置一个给定的索引,因为您正在插入null个元素。如果是这样,请改用此语法:

stringList[3] = reader["speed"]; // etc

但是你知道你想要的容量,最好只使用一个简单的数组,所以你不必用空项初始化一个列表:

var stringList = new string[60];

然后使用相同的语法(stringList[i] = whatever;)来填充它。

如果你必须使用List<T>(例如,如果你以后添加了其他元素),那么至少要使用constructor来预先分配一些空间:

var stringList = new List<string>(60);

答案 1 :(得分:0)

因为方法Insert()确实&#39;插入&#39;元件。让我解释..

假设下面是一个列表;

1 2 3

如果在2中插入元素4,则结果如下;

1 2 4 3

这是你的错误。