我无法弄清楚为什么我会在下面的代码中获得超出范围的异常。 _maxRowIndex
和_maxColIndex
的值分别为5
和0
。当row
和col
都等于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);
}
}
}
答案 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];