Arrays random.NextBytes的索引超出范围

Arrays random.NextBytes的索引超出范围,arrays,forms,random,byte,indexoutofboundsexception,Arrays,Forms,Random,Byte,Indexoutofboundsexception,我正在使用函数initializelters为打字游戏的开始准备字母。它应该准备5个随机字母到byte[]类型的数组中,然后将值传递到char[]类型的数组中。 当这种实现工作时,它通常会给出一个数组越界错误。这是函数本身和使用它的位置。关于这个错误有什么想法,或者我如何修复它?增加buff[5]的大小并不能解决问题 private static void InitializeLetters(char[] chars) { byte[] buff = ne

我正在使用函数initializelters为打字游戏的开始准备字母。它应该准备5个随机字母到byte[]类型的数组中,然后将值传递到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];
            }
        }
而不是

chars[i]=charspallette[buff[i]%26+1]

把这个

chars[i]=charspallette[buff[i]%26]

而不是

chars[i]=charspallette[buff[i]%26+1]

把这个

chars[i]=charspallette[buff[i]%26]

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