索引超出了数组的范围c#

时间:2013-11-04 11:53:01

标签: c#

DateTime[] start = new DateTime[] { new DateTime(1990, 1, 1), new DateTime(1995, 1, 1) };

DateTime[] end   = new DateTime[] { new DateTime(2000, 1, 1), new DateTime(2008, 1, 1) };

TimeSpan timespan;

private void button1_Click(object sender, EventArgs e)
{       

    for (int i=0; i<2; i++)
    {         

        if (end[i] < end[i + 1] && start[i] < start[i + 1] && start[i + 1] >= end[i])            
            timespan = (end[i] - start[i]) + (end[i + 1] - end[i]); 


        /* if (end[i-1] < end[i] && start[i-1] < start[i] && start[i] >= end[i-1])            
            timespan = (end[i-1] - start[i-1]) + (end[i] - end[i-1])  */
    }                 

    int timeDifference = timespan.Days;
    MessageBox.Show(timeDifference.ToString());
}

3 个答案:

答案 0 :(得分:2)

你的问题是,当i = 1时,i + 1超出了数组的范围。

不知道你期望如何使用最后一个元素(当没有下一个项目时)很难提供替代方案。

答案 1 :(得分:0)

end[i + 1]

当我从0变为1时,将给出一个2的索引器(即数组中的第三项)。显然,当应用于长度为2的数组时,这超出了范围。

答案 2 :(得分:0)

问题看起来很直接。

当你的循环迭代达到i = 1

你的内心状况结束[i]&lt;结束[i + 1]

将检查结束[1]&lt; end [2](在数组索引之外)

所以改变你的循环

for (int i=0; i<end.Length -1; i++)

for (int i=0; i<1; i++)