VB.net - Многомерные массивы.
В этой статье я подробно расскажу о многомерных массивах.
Конечно, их используют не так часто как одномерные, но в них нет ни чего сложного.
Объявление
Использование
Определение размера
ПРИМЕР 1
ПРИМЕР 2
Преимущества и недостатки многомерных массивов
Объявление
Начнем с объявления.
Для объявления одномерных массивов используют следующие варианты.
Dim massiv0() ' не определенный массив
Dim massiv1(n) ' массив размера n, содержит элементы от 0 до n-1
Dim massiv2()={0,1,2,3} ' массив чисел, размер массива 4
Dim massiv3()={"0","1","2","3"} ' массив строк, размер массива 4
Для определения многомерных массивов используется похожая конструкция:
Dim mass0(,)
Dim mass0(n,m)
Многомерный массив представляет из себя массив массивов. То есть каждый элемент является переменной типа массив.
Массивы могут иметь как одинаковый размер, так и произвольный.
'задаем 2 мерный масссив размера 3 с массивами одинакового размера
Dim mass() = {({"00", "01"}), ({"10", "11"}), ({"20", "21"})}
'задаем многомерный масссив размера 3 с массивами различной длины
Dim mass2() = {({"дом", "дворец", "хата", "халупа"}), _
({"автомобиль", "машина", "таратайка"}), _
({"деньги", "бабки", "лаве", "фантики", "баксы"})}
После определения массива, его можно использовать.
Использование
Для вывода элемента массива мы пишем имя массива и индекс элемента.
MsgBox(mass(0))
Похожим образом, для вывода конкретного значения многомерного массива указываем название массива, индекс внутреннего массива и индекс конкретного значения.
'вывод элемент массива
MsgBox(mass(0)(1))
Определение размера
Таким же образом поступаем и с определением размера массива.
'размер массива - количество членов массива
MsgBox(mass.Length)
Для многомерного массива это означает наличие 3 внутренних массивов (начиная с нуля), и для того что бы узнать их размер, тк он может быть разным у каждого, пишем следующие.
'размер массива - размерность определенного члена массива
MsgBox(mass(0).Length) '2
ПРИМЕР 1
Небольшой пример использования многомерных массивов.
Имеется 3 картинки, в массиве задаем ссылки на ресурсы.
В многомерный массив вводим свойства этих изображений, для каждой картинки свои.
На форму поместим 4 пикчербокса - в первые три будут выводиться определенные картинки, а в четвертый случайная.
Также добавим 4 ярлыка - соответсвующие подписи к рисункам.
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
'массив с сылками на картинки
Dim massRes() = {My.Resources.kot, My.Resources.pl, My.Resources.list}
'многомерный массив свойств
Dim mass2() = {({"кот", "кошка", "белый", "пушистый"}), _
({"плащ", "желтый"}), _
({"лист", "клен", "оранжевый"})}
Randomize()
Label1.Text = mass2(0)(Int(Rnd() * mass2(0).Length))
Label2.Text = mass2(1)(Int(Rnd() * mass2(1).Length))
Label3.Text = mass2(2)(Int(Rnd() * mass2(2).Length))
PictureBox1.Image = massRes(0)
PictureBox2.Image = massRes(1)
PictureBox3.Image = massRes(2)
'случайный элемент массива
Dim x = Int(Rnd() * mass2.Length)
Label4.Text = mass2(x)(Int(Rnd() * mass2(x).Length))
PictureBox4.Image = massRes(x)
End Sub
Под каждой картинкой появляется только та подпись, которая ей соответствует.
ПРИМЕР 2
Многомерные массивы могут содержать массивы с различными типами данных.
Создадим его:
Он будет содержать массивы с такой структурой: ссылка на картинку из ресурсов, число и 2 строковые переменные.
Dim mass2() = {({My.Resources.kot, 0, "кот", "белый", "пушистый"}), _
({My.Resources.pl, 1, "плащ", "желтый", ""}), _
({My.Resources.list, 2, "лист", "клен", "оранжевый"})}
В пикчербокс выводим изображение, а в соответствующие ярлыки - число и строки
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Dim mass2() = {({My.Resources.kot, 0, "кот", "белый", "пушистый"}), _
({My.Resources.pl, 1, "плащ", "желтый", ""}), _
({My.Resources.list, 2, "лист", "клен", "оранжевый"})}
PictureBox1.Image = mass2(a)(0)
Label1.Text = mass2(a)(1)
Label2.Text = mass2(a)(2)
Label3.Text = mass2(a)(3)
Label4.Text = mass2(a)(4)
If a = mass2.Length - 1 Then
a = 0
Else
a += 1
End If
End Sub
Теперь по нажатию на кнопку изменится и картинка и описание.
Получилась небольшая база данных.
Преимущества и недостатки многомерных массивов
Преимущества многомерных массивов как и у одномерных
+ адресный доступ к записям
+ время доступа не зависит от длины массива
+ отсутствие надобности в дополнительной памяти.
Недостатки.
Кроме недостатков одномерных массивов, а именно
- для статического массива — отсутствие динамики
- невозможность удаления или добавления элемента без сдвига других
- при работе с массивом необходимы дополнительные средств контроля, например, для избежания угрозы выхода за границы массива
добавляется большее потребления памяти:
Общее количество элементов данного массива определится как
mas(2,3) as int
КоличествоСтрок * КоличествоСтолбцов = 2 * 3 = 6.
Количество байт памяти, требуемых для размещения массива, определится как
КоличествоЭлементов * РазмерЭлемента = 6 * 4 = 24 байта.
На сегодня это все.
Смотреть видео
В начало
|