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());
}
答案 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++)