覆盖数组中的某些值

时间:2014-11-07 10:00:10

标签: c# arrays overwrite

我有这段代码:

for (int z = 0; z < date1Index.Length; z++)
{
    test[date1Index[z]] = datA_new[date2Index[z]]; 
}

我的问题: 我有四个数组:datE_olddatA_old的长度为840. datE_newdatA_new的长度为20.现在我遍历datE数组并检查是否有日期序列相等,并将索引值存储到date1Index(10个索引值(整数),从829到839)和date2Index(也是从0到10的11个值)。所以在这个索引上日期是一样的。现在我将datA_old数组复制到一个名为test的新数组中。我现在要做的是以下内容:我想要将索引829到839的test数组中的值替换为索引0-9处datA_new数组的值,但是我得到了OutOfBoundException。有什么问题?

代码是我存储索引等:

test = datA_old;

for (int c = 0; c < datE_new.Length; c++)
{
    for (int d = 0; d < datE_old.Length; d++)
    {
        if (datE_new[c] == datE_old[d])
        {
            s_dateold.Add(c);
            s_datenew.Add(d);
        }
    }
}

date1Index = s_dateold.ToArray();
date2Index = s_datenew.ToArray();

2 个答案:

答案 0 :(得分:0)

所以你想用值_data_new [0],_ data_new [1],...,_ data_new [9]替换test [829],test [830],....,test [839]的值。 ]

如果这正是你想要完成的,那么你应该像这样改变循环:

for(int z = 0; z < 10; z++)
{
     test[829+z] = _data_new[z];
}

另请注意,从829到839的索引不是10个值而是11个,如果包含两个索引值,则不能将10个值(0-9)复制到11个位置(829-839)

答案 1 :(得分:0)

解决了它:行

test[date1Index[z]] = datA_new[date2Index[z]];

必须改为:

test[date2Index[z]] = datA_new[date1Index[z]];