Для массива 2-D, вы, вероятно, хотите, чтобы получить длину от GetLength (0) и GetLength (1) вместо использования Длина:
dailyMenu [,] daysOfMonth = new dailyMenu[4,5];
for (int column = 0; column < daysOfMonth.GetLength(0); column++)
{
for (int row = 0; row < daysOfMonth.GetLength(1); row++)
{
dailyMenu dm = new dailyMenu();
//do something on dm
daysOfMonth[column,row] = dm; //assign it like this
}
}
Это происходит потому, что GetLength имеет аргумент индекса размера (0, 1, 2 и т. д.), который может дать вам длину массива в этом измерении (0 - это первое измерение - в вашем случае столбец, а 1 - второй - в вашем случае строка. Длина этого не имеет.
Чтобы присвоить значение в массив, просто получить доступ к массиву по показателям измерения (столбцов и ряд) в порядке правильно - в противном случае вы получите IndexOutOfRange исключение:
daysOfMonth[column,row] = dm; //correct
daysOfMonth[row,column] = dm; //wrong, exception on 5,0
В выше код - это то, что у меня есть до сих пор –