要么我错过了一些非常明显的东西,要么就是问题。
List<>的插入方法在指定的索引上添加另一个项目但不覆盖它。
actionsIds.Insert(0, "item1");
actionsIds.Insert(1, "item2");
actionsIds.Insert(0, "item3");
MessageBox.Show(actionsIds.Count.ToString());
我得到数= 3 ..为什么不覆盖它或者它实际上不是为了这个目的?
答案 0 :(得分:2)
Insert
(https://msdn.microsoft.com/en-us/library/sey5k5z4(v=vs.110).aspx)在指定的索引处添加新项,如果需要替换特定索引处的项,则应使用索引器属性(https://msdn.microsoft.com/en-us/library/0ebtbkkc(v=vs.110).aspx)。
actionsIds[0] = "item1";
以这种方式执行时,您需要确保索引存在,否则会导致异常。如果您不确定相关索引是否存在,可以通过检查Count
来执行此操作。
if (index >= 0 && index < actionsIds.Count)
actionsIds[index] = item;
如果索引不存在(使用else
或Add
)
Insert
块
答案 1 :(得分:1)
List&lt;&gt; .Insert用于将项目添加到给定位置的列表中。所以基本上它会进一步推送所有第1项“索引”,以便为你想要的项目创建一个位置
你的例子如下:
第1步:第1项
第2步:第1项 - 第2项
第3步:第3项 - 第1项 - 第2项
如果您的目标是替换给定位置,我建议您使用RemoveAt(索引),然后插入或使用它:
yourList[index] = "item2";
编辑:
如果该项目将首次添加,则表示您位于列表的末尾。话虽这么说,这段代码可以完成这项工作。
if(index <= yourList.Count)
{
yourList[index] = "item2";
}
else
{
//You can chose one of these
yourList.Add("item2"); //1
yourList.Insert(index,"item2"); //2
}