尝试访问数组元素时IndexOutOfRangeException

时间:2010-11-23 03:45:51

标签: c# arrays

我无法弄清楚为什么我会在下面的代码中获得超出范围的异常。 _maxRowIndex_maxColIndex的值分别为50。当rowcol都等于0时,会首次抛出异常。我不明白为什么0, 0会超出数组范围。

    _cells = new ToolBarButton[_maxRowIndex, _maxColIndex];
    .
    .
    .
    for (int col = 0; col <= _maxColIndex; col++) {
                    for (int row = 0; row <= _maxRowIndex;  row++)
                    {

                      if (_cells[row, col] == null)
                        {
                           PopulateCell(toolBarbutton, row, col);
                        }

                    }
                }

4 个答案:

答案 0 :(得分:4)

数组索引从0开始,最多为[upperbound-1]。由于你的循环从0开始,它必须以&lt;限制值而不是&lt; =限制值。因此,将“&lt; =”更改为“&lt;”在循环。例如:

col&lt; = _maxColIndex

应改为

col&lt; _maxColIndex

答案 1 :(得分:1)

如果您希望max index为5,则表示数组需要长度为6,因为第一个元素位于索引0处。

所以,改变:

_cells = new ToolBarButton[_maxRowIndex, _maxColIndex];

为:

_cells = new ToolBarButton[_maxRowIndex+1, _maxColIndex+1];

答案 2 :(得分:1)

你的陈述中有&lt; =

所以你的循环评估col = 0,1,2,3,4和5 ... 5超出范围

答案 3 :(得分:1)

我猜你应该声明_cells如下

_cells = new ToolBarButton[5,1];

而不是

_cells = new ToolBarButton[5,0];