我使用函数InitializeLetters为打字游戏的开始准备字母。它应该为byte []类型的数组准备5个随机字母,然后将值传递给char []类型的数组。 虽然这种实现有效,但它通常会给出数组越界错误。这是函数本身及其使用的地方。有关此错误的任何想法或如何解决?增加buff [5]的大小并不能解决问题。
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];
}
}
在按钮开始时调用该函数。
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();
}
}
答案 0 :(得分:0)
而不是
chars [i] = charspallete [buff [i]%26 + 1];
把这个
chars [i] = charspallete [buff [i]%26];