开发者

IndexOutOfRangeException when trying to access array element

开发者 https://www.devze.com 2023-01-26 05:01 出处:网络
I can\'t figure out why I\'m getting the out of range exception on the follow开发者_StackOverflowing piece of code. The values for _maxRowIndex and _maxColIndex are 5, and 0 respectively. The exceptio

I can't figure out why I'm getting the out of range exception on the follow开发者_StackOverflowing piece of code. The values for _maxRowIndex and _maxColIndex are 5, and 0 respectively. The exception is being thrown on the first time through when row and col are both equal to 0. I don't understand why 0, 0 would be out of bounds on the array.

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

                    }
                }


Array indices start from 0 and are upto [upperbound-1]. Since your loop starts at 0, it must end at < the limit value rather than <= limit value. So, change the "<=" to "<" in the loop. Eg:

col <= _maxColIndex

should be changed to

col < _maxColIndex


If you want the max index to be 5, that means the array needs to be of length 6 as the first element is at index 0.

So, change:

_cells = new ToolBarButton[_maxRowIndex, _maxColIndex];

to:

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


You have <= in your for statement...

So your loop evaluates for col =0, 1, 2, 3, 4 and 5... 5 is out of bounds


I guess you should declare _cells as below

_cells = new ToolBarButton[5,1];

instead of

_cells = new ToolBarButton[5,0];
0

精彩评论

暂无评论...
验证码 换一张
取 消