IndexOutOfRangeException With Array

时间:2017-09-30 17:22:00

标签: c# arrays c#-4.0

我正在尝试迭代我的点数组,但我得到以下错误:

  

Un' System.IndexOutOfRangeException'未处理的异常发生

这是我的语法 - 我在抛出错误的行上方有一条评论

如何编写这种语法,以便检索i-1位置?

private void btnMakeCalc_Click(object sender, EventArgs e)
{
    Point[] pts = new Point[] { new Point { X = -100, Y = 0 }, new Point { X = 0, Y = 0 } };
    for (int i = 0; i < pts.Count(); i++)
    {
        float X1value = pts[i].X;
        //The below line throws the error
        float X2value = pts[i-1].X;
        MessageBox.Show("X1 Is: " + Convert.ToString(pts[i].X) + "Environment.NewLine" + "X2 Is: " + Convert.ToString(pts[i-1].X));  
    }
}

1 个答案:

答案 0 :(得分:2)

这是因为您试图在第一个条目之前指向一个值,尝试包括检查以确定它不是您指向的(第一个条目-1)。

类似的东西:

private void btnMakeCalc_Click(object sender, EventArgs e)
{
    Point[] pts = new Point[] { new Point { X = -100, Y = 0 }, new Point { X = 0, Y = 0 } };
    for (int i = 0; i < pts.Count(); i++)
    {
        float X1value = pts[i].X;
        //The below line throws the error (see fix)
        if (i != 0)
            float X2value = pts[i-1].X;
            MessageBox.Show("X1 Is: " + Convert.ToString(pts[i].X) + "Environment.NewLine" + "X2 Is: " + Convert.ToString(pts[i-1].X));
        else
          continue;
    }
}

我喜欢将这些小支票称为&#34;完整性检查&#34;我不知道这是否被口语化接受。