Iterate through 2 dimensional array c#

You are passing an invalid index to GetLength. The dimensions of a multidimensional array are 0 based, so -1 is invalid and using a negative number (or a number that is larger than the number of dimensions - 1) would cause an IndexOutOfRangeException.

This will loop over the first dimension:

for (int k = 0; k < odds.GetLength(0); k++)

You need to add another loop to go through the second dimension:

for (int k = 0; k < odds.GetLength(0); k++)
    for (int l = 0; l < odds.GetLength(1); l++)
        var val = odds[k, l];

Well, usualy when you want to iterate on a 2D array:

for(int col = 0; col < arr.GetLength(0); col++)
    for(int i = row; row < arr.GetLength(1); row++)
        arr[col,row] =  /*something*/;

Arrays are always zero-based, so there's no point of trying to get something at -1 index.


string[,] arr = new string[2, 3];
        arr[0, 0] = "0,0";
        arr[0, 1] = "0,1";
        arr[0, 2] = "0,2";

        arr[1, 0] = "1,0";
        arr[1, 1] = "1,1";
        arr[1, 2] = "1,2";

        for (int i = 0; i < arr.GetLength(0); i++)
        {
            for (int j = 0; j < arr.GetLength(1); j++)
            {
                Response.Write(string.Format("{0}\t", arr[i, j]));
            }
            Response.Write("<br/>");
        }

Tags:

C#

Arrays