-1

我有以下代码:

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 位置复制到列表中。在这里,我OutOfBoundException在第二个 for 循环之后得到了一个。怎么了?

4

3 回答 3

2

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

仔细检查newList.

于 2014-11-07T07:11:27.297 回答
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.

于 2014-11-07T07:18:15.483 回答
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]));

     }
}

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

于 2014-11-07T07:24:47.267 回答