我有以下代码:
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_new
,date_old
,data_new
,data_old
和名为newList
的列表。
date_old和data_old具有相同的长度,date_new和data_new也是如此。
我想遍历日期数组检查是否有相同的日期值。虽然我这样做,但我想将data_old数组中的每个值复制到newList。当值相等时,我想将此点的值从data_new位置复制到List中。
在第二个for循环之后,我得到一个OutOfBoundException
。怎么了?
答案 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_new
和data_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]));
}
}
使用您的列表解决方案和您提供的逻辑