2016-04-21 3 views
1
dailyMenu [,] daysOfMonth = new dailyMenu[4,5]; 
for (int column = 0; column < daysOfMonth.Length; column++) 
{ 
    for (int row = 0; row < daysOfMonth.Length; row++) 
    { 
     dailyMenu dm = new dailyMenu(); 

    } 
} 

Мой вопрос: я хочу знать, как заполнить мой 2D-массив новыми объектами моего класса dayMenu?Как заполнить 2D-массив объектами класса внутри цикла for?

+0

В выше код - это то, что у меня есть до сих пор –

ответ

2

Для массива 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 
+0

OOOOH okay я получаю это сейчас –

+0

Не быть скупым, но могли бы вы также помочь мне в том, как распечатать это на консоли? –

+0

Распечатать? Да, это возможно с помощью Console.WriteLine(). Но это зависит от того, что вы хотите распечатать и как выглядит ваш класс dayMenu. Что вы хотите напечатать? Как выглядит класс? – Ian

1

Мой вопрос: я хочу знать, как заполнить мой 2D-массив новыми объектами моего класса dayMenu?

После инициализации дм.

daysOfMonth[column,row] = dm

+0

Итак, это заполнит мой 2D-массив различными объектами моего класса dailymenu? –

+0

Это заполнит ваш массив тем, что вы дали 'dm'. Так что в принципе да, потому что вы используете 'new', поэтому он создает новые объекты с каждым циклом. – Segmentation

1

Вы можете использовать .GetLength(), чтобы узнать длину измерения. Или просто используйте те же константы, которые вы используете в 2D-конструкторе массива.

dailyMenu [,] daysOfMonth = new dailyMenu[4,5]; 
for (int column = 0; column < daysOfMonth.GetLength(0); column++) 
{ 
    for (int row = 0; row < daysOfMonth.GetLength(1); row++) 
    { 
     daysOfMonth[column,row] = new dailyMenu(); 
    } 
} 
+0

Большое спасибо, я знал, что это связано с тем, что –

Смежные вопросы