列表索引错误:索引超出范围

时间:2011-12-05 09:43:24

标签: c# asp.net

我有两个列表,我想将数据从一个复制到另一个,我收到此错误:

  

指数超出范围。必须是非负数且小于集合的大小。
  参数名称:index

这是我的代码:

static  IList<Common.Data.Driver> Stt_driverList = new List<Common.Data.Driver>();
List<Common.Data.Driver> driverList = new List<Common.Data.Driver>();

for (int i = 0; i < driverList.Count; i++)
{
    //Fill in The Static Driver List
    Stt_driverList[i] = driverList[i]; 
}

3 个答案:

答案 0 :(得分:1)

您不能使用索引器来增加列表的大小;仅修改现有条目。您可以使用Add代替......但只需一次复制整个列表就更简单了:

Stt_driverList = new List<Common.Data.Driver>(driverList);

该构造函数只在一次调用中执行浅拷贝。

如果这不是您想要的,那么可能仍然有一种避免明确循环的好方法 - 给我们提供更多详细信息,我们可以为您提供更多帮助。

答案 1 :(得分:1)

开始循环时,

Stt_driverList不包含任何项目,因此您无法通过索引引用元素。请尝试使用Add方法:

static IList Stt_driverList = new List();
IList driverList = new List();
for (int i = 0; i < driverList.Count; i++)
{
    //Fill in The Static Driver List
    Stt_driverList.Add(driverList[i]);
}

答案 2 :(得分:0)

你应该使用Stt_driverList.Add(...),也看一下AddRange()函数。