我有一个for循环,将字符分配给char数组,错误:System.IndexOutOfRangeException

时间:2019-04-03 16:36:50

标签: c# arrays

我正在编写一个程序,其中包含一些简单的游戏,例如Tik Tak Toe,等等。我制作了一个char数组,其中包含“ x”和“ o”作为圆。我做了一个for循环只是为了分配占位符。当我运行它时,它会在循环末尾加大括号,并显示“ System.IndexOutOfRangeException”。让我感到困惑的是,for循环如何超出范围。

我尝试将“ i <3”更改为“ i <2”。 即使那行得通,我还是要问,因为我不明白为什么行得通

char[,] CoC = new char[2, 2];
for (int i = 0; i < 3; i++)
{
     CoC[i, 0] = 'a';
     CoC[i, 1] = 'b';
     CoC[i, 2] = 'c';
}

“ CoC”代表CrossOrCircle,“ a,b,c”只是占位符

2 个答案:

答案 0 :(得分:1)

CoC被创建为new char[2, 2],这意味着每个维度中只有两个元素。您需要将其初始化为更大的大小,以适应在那里的循环:

char[,] CoC = new char[3, 3];
// Here -------^--^

答案 1 :(得分:0)

char[,] CoC = new char[3, 3];   

会更好,因为您需要一个[3,3]数组而不是一个[2,2]数组, 您的循环显示3x3项