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