Как перебрать несколько массивов?
Вопрос
Я новичок в этом, поэтому извините, если мой вопрос задавался ранее. Я искал, но не смог найти или, возможно, узнать ответ. Я использую Visual Studio 2008 и создаю приложение в vb.net.
У меня есть 4 массива с именем: - account1 account2 account3 account4. Все они имеют 4 элемента. Я хочу назначить значения для элементов в массивах эффективным способом. Я думал, что два для следующих циклов сделают это. Мой псевдокод выглядит примерно так
for i=1 to 4
for c= 0 to 3
account(i)(c)= 'mydata' /so account(i) would be account1 etc and c the element
next c
next i
и, таким образом, все элементы всех массивов заполняются без необходимости настраивать цикл fornext для каждого отдельного имени массива. Как мне этого добиться, пожалуйста.
Надеюсь, я предоставил достаточно информации, чтобы вы могли ее использовать, и вы можете помочь. Спасибо за все и любые советы. Р>
Решение
Если я правильно понимаю, почему бы и нет:
For i as integer = 0 to 3
account1(i) = "Account1"
account2(i) = "Account2"
account3(i) = "Account3"
account4(i) = "Account4"
Next
Измените VB.Net для ответа Qua :
dim accounts(4,4) as integer
for i as integer = 0 To accounts.GetUpperBound(0)
for j as integer = 0 To accounts.GetUpperBound(1)
accounts(i, j) = new integer 'not needed for intergers, but if you had a class in here'
accounts(i, j) = i*j;
next
next
Другие советы
Вы должны создать многомерный массив вместо 4-х массивов, который позволит вам в общем цикле проходить по массивам.
int[,] accounts = new int[4,4] // 4 accounts with 4 elements
for (int i = 0 ; i < accounts.GetUpperBound(0); i++)
for (int j = 0 ; i < accounts.GetUpperBound(1); j++)
accounts[i,j] = i*j;
next
next
Когда я читаю ваш пример кода, я не думаю, что вам нужно использовать 2 отдельных цикла, как будто я прав, вы присваиваете то же значение i-й позиции вашего массива например:
array1 (i) = array2 (i) = array3 (i) = array4 (i)
В приведенном выше примере вы можете написать что-то вроде этого (в псевдокоде):
for i = 0 to 3
account1(i) = MyData
account2(i) = MyData
account3(i) = MyData
account4(i) = MyData
next i
Я думаю, что это понятнее, чем пытаться написать цикл для имен переменных, особенно для числа поддерживаемых массивов
Другой вариант, который может быть более подходящим, если у вас много массивов, состоит в том, чтобы поддерживать список массивов, который затем можно будет перебрать достаточно просто. Р>
Псевдокод для этой опции:
for each array in listOfArrays
for i = 0 to 3
array(i) = MyData
next i
next
Это определенно понятнее, чем пытаться динамически генерировать имена массивов, а также более удобен в обслуживании