2017-04-10 7 views
1

Ich benutze eine Funktion InitializeLetters, um die Buchstaben für den Beginn des Tippspiels vorzubereiten. Es soll 5 zufällige Buchstaben in ein Array vom Typ byte [] vorbereiten und danach die Werte in ein Array vom Typ char [] übergeben. Während diese Art der Implementierung funktioniert, gibt es oft einen Array-außerhalb-Grenzen-Fehler. Hier ist die Funktion selbst und der Ort, an dem sie benutzt wird. Irgendwelche Ideen zu diesem Fehler oder wie kann ich das beheben? Das Erhöhen der Größe von Buff [5] löst das Problem nicht.Index außerhalb der Grenzen für random.NextBytes

private static void InitializeLetters(char[] chars) 
     { 
      byte[] buff = new byte[5]; 
      Random rand = new Random(); 
      rand.NextBytes(buff); 
      string charspallete = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
      for (int i = 0; i < 5; i++) 
      { 
       chars[i] = charspallete[buff[i] % 26 + 1]; 
      } 
     } 

Und die Funktion wird beim Start der Schaltfläche aufgerufen.

private void labelStart_Click(object sender, EventArgs e) 
     { 
      if (state == 0) 
      { 
       state = 1; 
       labelStart.Text = "Stop"; 
       tmrMoving.Enabled = true; 
       char[] chars = new char[5]; 
       InitializeLetters(chars); 
       c1 = chars[0]; 
       c2 = chars[1]; 
       c3 = chars[2]; 
       c4 = chars[3]; 
       c5 = chars[4]; 
       labelPause.Show(); 
      } 
} 

Antwort

0

Statt

Zeichen [i] = charspallete [Schwabbelscheibe [i]% 26 + 1];

setzen diese

Zeichen [i] = charspallete [Schwabbelscheibe [i]% 26];

Verwandte Themen