C# 在列表中的特定位置添加项目

C# 在列表中的特定位置添加项目,c#,C#,我试图找到是否可以在列表中的特定位置添加项目。 范例 当我试着列出这个的时候 List<string> mitems = new List<string>(); mitems.Insert(5, "TestString"); List mitems=new List(); 插入(5,“测试字符串”); 我在列表索引中获取错误列表超出范围。 列表是否与此相关?使用插入(索引,项目)方法 有关更多信息,请查看 但是,当您试图在不存在的索引处插入项时,将出现错误 您可以

我试图找到是否可以在列表中的特定位置添加项目。 范例

当我试着列出这个的时候

 List<string> mitems = new List<string>();
 mitems.Insert(5, "TestString");
List mitems=new List();
插入(5,“测试字符串”);
我在列表索引中获取错误列表超出范围。 列表是否与此相关?

使用
插入(索引,项目)方法

有关更多信息,请查看

但是,当您试图在不存在的索引处插入项时,将出现错误

您可以像使用数组一样使用10个空值初始化列表,但如果使用
Insert
将创建一个新条目,而不是像使用字典一样替换旧条目。这意味着首次使用
Insert

此示例代码

var items = new List<string>();
items.AddRange(Enumerable.Repeat(string.Empty, 10));
Console.WriteLine(items.Count);
items.Insert(5, "TestString");
Console.WriteLine(items.Count);
var items=newlist();
items.AddRange(可枚举.重复(string.Empty,10));
Console.WriteLine(items.Count);
项目。插入(5,“测试字符串”);
Console.WriteLine(items.Count);
给出此输出(为了更好地理解):

十,

十一,

您可以使用List.Insert(int,T)方法执行此操作,例如:

var tokens = new List<string>();
for (int i = 0; i < 10; i++)
    tokens.Add(string.Empty);
tokens.Insert(5, "TestString"); 
var tokens=newlist();
对于(int i=0;i<10;i++)
tokens.Add(string.Empty);
插入(5,“测试字符串”);

编辑: 如果您只是尝试替换索引5中的项,则[]也会执行以下示例中的操作:

var tokens = new List<string>(10);
for (int i = 0; i < 10; i++)
    tokens.Add(string.Empty);
tokens[5] = "TestString";
var令牌=新列表(10);
对于(int i=0;i<10;i++)
tokens.Add(string.Empty);
令牌[5]=“TestString”;
私有静态void Myfunc()
{
列表l=新列表();
字符串opt=“y”;
while(opt==“y”)
{
Console.WriteLine(“是否要在特定位置添加?(y/n)”);
字符串pos=Console.ReadLine();
如果(位置=“y”)
{
WriteLine(“要添加哪个索引?”);
int index=Convert.ToInt16(Console.ReadLine());
WriteLine(“在{0}中添加项”,索引);
l、 插入(索引,Console.ReadLine());
}
其他的
{
Console.WriteLine(“输入以添加列表”);
l、 添加(Console.ReadLine());
Console.WriteLine(“您想继续吗?(y/n)”);
opt=Console.ReadLine();
}
Console.WriteLine(“是否要打印列表?(y/n)”);
string print=Console.ReadLine();
如果(打印=“y”)
{
foreach(l中的var项目)
{
控制台写入线(项目);
}
}
}
我为你写了这个函数。 将此功能添加到控制台应用程序,以便更好地了解列表如何用于插入和附加

编辑1:

我刚刚看到您的编辑,另一种使用默认值初始化列表,然后在特定位置插入内容的方法是通过如下方式初始化列表:-

List<string> l = Enumerable.Repeat("something blank", 10).ToList();
List l=Enumerable.Repeat(“空白的东西”,10).ToList();

然后添加到您选择的索引中

以下内容在0-9之间的每个索引处添加字符串的默认值

string[] tokens= new string[10];
但是列表是在堆上创建的,没有实例化任何内容。。没有默认的赋值

List<string> mitems = new List<string>();
如果您这样做,它将起作用

mitems.Insert(0, "TestString");

您的意思是想通过在随机索引中任意插入值来构建列表吗?如果是,则不是。您可以
插入
值,但必须在0(包含)和当前列表大小(排除)之间选择一个索引,所以我想这不是你想要的。有人读过标题或最后一句吗?;)他给出了一个数组示例,但要求在列表上使用相同的方法…“列表是否与此相关?”你的代码很好,它可以工作。但只有当列表不是空的->因此你得到的索引超出范围。你的列表在首先,如果没有索引0,1,2,3,4,5等,如何在索引5处插入内容?尝试创建一个数组,如
string[]tokens=newstring[1]
,然后执行
tokens[5]="TestString
。它提供相同的error@KamalaOP询问的是列表,而不是数组。Thx John,您更快了:d此代码将抛出ArgumentOutOfRangeException;)我在以下方面遇到错误:列表索引内的列表超出范围error@Dim请看我对你问题的评论。你的方法与我的情况不匹配。假设我有10个屁股ons和它在特定位置添加的每个按钮都是文本。因此,如果使用您的示例,它将删除我已经插入的值。@Dim也许您最好在问题中描述您的实际用例,以便我们可以建议您采取正确的行动方案?不会更好。请尝试在第一次迭代中添加索引5.我只是编辑了答案,试着告诉我。它对我很有用。
List<string> mitems = new List<string>();
mitems.Insert(5, "TestString");
mitems.Insert(0, "TestString");