C#将值从数组复制到列表

时间:2014-11-07 07:06:52

标签: c# arrays copy lis

我有以下代码:

for (int c = 0; c < date_old.Length; c++) 
{
    for (int d = 0; d < date_new.Length; d++)
    {
        newList[c] = data_old[c];

        if (date_old[c] == date_new[d])
        {
            newList[c] = data_new[d];
        }
    }
}

我要做的是以下内容:

我有四个数组:date_newdate_olddata_newdata_old和名为newList的列表。 date_old和data_old具有相同的长度,date_new和data_new也是如此。 我想遍历日期数组检查是否有相同的日期值。虽然我这样做,但我想将data_old数组中的每个值复制到newList。当值相等时,我想将此点的值从data_new位置复制到List中。 在第二个for循环之后,我得到一个OutOfBoundException。怎么了?

3 个答案:

答案 0 :(得分:2)

当您尝试读取/写入索引大于array.Length -1的数组时,抛出此异常。

仔细检查newList的大小。

答案 1 :(得分:2)

确保将newList实例化为

var newList = new DateTime[Math.Max(date_old.Length, date_new.Length)];

同时确保date_old的长度等于data_old的长度,date_newdata_new的长度相同。

如果可以,请将newList[c] = data_old[c];移至外部for循环(即第3行),它会覆盖分配给newList的新数据。

答案 2 :(得分:1)

for (int c = 0; c < date_old.Length; c++)
{
     for (int d = 0; d < date_new.Length; d++)
     {
         newList.Add((date_old[c] == date_new[d] ? data_new[d] : data_old[c]));

     }
}

使用您的列表解决方案和您提供的逻辑