2017-09-30 1 views
-1

Ich versuche, meine Reihe von Punkten zu wiederholen, aber ich bin die folgenden Fehler bekommen:IndexOutOfRangeException Mit Array

Un unhandled exception of Type 'System.IndexOutOfRangeException' occured

Das ist meine Syntax ist - und ich habe einen Kommentar über die Linie, die den Fehler wirft

Wie sollte diese Syntax geschrieben werden, damit ich i - 1 Position abrufen kann?

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

Beginnen Sie mit "i = 1", oder verwenden Sie "i" und "i - 1" und beenden Sie einen früh. –

+0

@Winnie - wenn ich meine Schleife ändern, um ich BellHopByDayAmetuerCoderByNigh

Antwort

2

Dies liegt daran, Sie auf einen Wert vor dem ersten Eintrag zeigen versuchen, versuchen, eine Überprüfung, einschließlich, dass es nicht die (erster Eintrag-1) Sie zeigt auf.

Etwas wie:

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; 
    } 
} 

ich als „Gesundheits-Checks“, um diese kleinen Kontrollen zu verweisen wie ich weiß nicht, ob das umgangssprachlich akzeptiert wird.

Verwandte Themen