C# List.Insert 缺少一些索引

C# List.Insert misses some indexes

我有一个叫 stringListList<string>。我试图在列表中插入一些字符串。首先,我使用 for 循环为我的内容生成 "empty places"。

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

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

这是我的 stringList:

每个元素都读对了,但是少了三个索引。第 3 个索引应该是第 6 个,第 4 个 -> 第 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;

对不起我的英语。

因为方法 Insert() 确实是 'inserts' 个元素。让我解释一下..

假设下面是一个列表;

1 2 3

如果在2中插入元素4,结果是这样的;

1 2 4 3

这是你的错误。

List.Insert 将在给定索引处向列表添加一个元素 并移动以下所有元素.

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

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

但是正如你预先知道你想要的容量,最好只使用一个简单的数组,这样你就不必用空项目初始化列表:

var stringList = new string[60];

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

如果您必须使用 List<T>(例如,如果您稍后添加其他元素),那么至少使用 constructor 可以让您预先分配一些 space前面:

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