-6
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());
}
4

3 に答える 3

2

あなたの問題は、i = 1theni + 1が配列の範囲外にあることです。

最後の要素 (次の項目がない場合) をどのように処理するかを知らなければ、代替手段を提供することは困難です。

于 2013-11-04T11:54:35.033 に答える
0
end[i + 1]

i が 0 から 1 になると、インデクサーは 2 になります (つまり、配列の 3 番目の項目)。明らかに、長さ 2 の配列に適用すると、これは範囲外です。

于 2013-11-04T11:54:56.603 に答える