.Net List <t> insert </t>

时间:2009-09-28 17:06:13

标签: c# .net list

我正在尝试

var test = new List< int>(10);

test.Insert(1, 0);
or
test[1] =0;

我对此感到异常。

如何插入列表?

由于 空间可以让这个编辑器正确显示事物。

6 个答案:

答案 0 :(得分:13)

var test = new List<int>(10);
test.Add(1);

var test = new List<int>(10);
test.Insert(0, 1) // inserts the value in the first position

<强>更新

我错过了你原来的意图。要做你想做的事,你只需要用初始值初始化列表中的每个位置。不那么建议的方式是:

//var test = new List<int>(10){0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
var test = new List<int>(10);
test.AddRange(Enumerable.Repeat(0, 10)); // Thanks to Ahmad
test[3] = 10; // works now

答案 1 :(得分:5)

在重新分配之前,您正在分配一个容纳10个项目的空列表。然后你插入它的中间。这就是它失败的原因。

修改

你似乎认为它就像一个数组,它实际上分配了十个插槽开始。不是。如果你想要十个插槽,你需要自己添加它们。一旦你这样做,就可以在中间引用位置。

答案 2 :(得分:2)

假设您要创建10个整数的列表并将值设置为1.您可以

var test = Enumerable.Repeat<int>(0, 10).ToList();
test[1] = 0;

这将创建一个10个整数的列表(全部等于0),然后将索引1的值设置为0.显然,当列表初始化为0时,第二行是不必要的。

答案 3 :(得分:1)

感谢所有答案。

我的清单是

var x = new List<ISomeInterface>(10);

我不能在界面上重复,我不知道它是什么对象。因为它非常通用。

我使用的解决方案:

var x = new ISomeInterface[10];
x.ToList();

答案 4 :(得分:0)

列表构造函数的整数参数定义列表的容量,这意味着列表可以最多容纳多少个元素。在您对列表进行实例化后,它是空的并且能够保存10个值(尽管我不确定10是否不仅仅是初始容量,它将根据需要增长)。无论如何,当你试图插入位置1(第二个元素)时,你会得到一个例外,因为列表中不包含任何元素。

我认为你喜欢使用的是一个数组:

int[] integers = new int[10]; // Creates an array which holds 10 values,
                              // initially all values are zero.

integers[1] = 123; // Modifiy the value at index 1.

最诚挚的问候 Oliver Hanappi

答案 5 :(得分:0)

在添加足够的元素以使列表至少达到那么大之前,您无法插入到某个位置。这在List's Insert documentation

中有明确记录

在以下情况下可以抛出ArgumentOutOfRangeException:

  • index小于0或
  • index大于Count。

如果您只是想设置特定元素,可以添加所有10个元素,然后使用索引器:

test[1] = 0;

否则,您可以添加元素,然后插入:

test.Add(0); // Now the list has an element
test.Insert(1,0); // Insert into element 1...