Учебники

VB.Net — Массивы

В массиве хранится последовательная коллекция фиксированного размера элементов одного типа. Массив используется для хранения коллекции данных, но часто более полезно думать о массиве как о коллекции переменных одного типа.

Все массивы состоят из смежных областей памяти. Самый низкий адрес соответствует первому элементу, а самый высокий адрес — последнему.

Массивы в VB.Net

Создание массивов в VB.Net

Чтобы объявить массив в VB.Net, вы используете оператор Dim. Например,

Dim intData(30)	  ' an array of 31 elements
Dim strData(20) As String	' an array of 21 strings
Dim twoDarray(10, 20) As Integer	'a two dimensional array of integers
Dim ranges(10, 100)	 'a two dimensional array

Вы также можете инициализировать элементы массива при объявлении массива. Например,

Dim intData() As Integer = {12, 16, 20, 24, 28, 32}
Dim names() As String = {"Karthik", "Sandhya", _
"Shivangi", "Ashwitha", "Somnath"}
Dim miscData() As Object = {"Hello World", 12d, 16ui, "A"c}

Элементы в массиве могут быть сохранены и доступны с помощью индекса массива. Следующая программа демонстрирует это —

Live Demo

Module arrayApl
   Sub Main()
      Dim n(10) As Integer ' n is an array of 11 integers '
      Dim i, j As Integer
      ' initialize elements of array n '         
      
      For i = 0 To 10
          n(i) = i + 100 ' set element at location i to i + 100 
      Next i
      ' output each array element's value '
      
      For j = 0 To 10
          Console.WriteLine("Element({0}) = {1}", j, n(j))
      Next j
      Console.ReadKey()
   End Sub
End Module

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

Element(0) = 100
Element(1) = 101
Element(2) = 102
Element(3) = 103
Element(4) = 104
Element(5) = 105
Element(6) = 106
Element(7) = 107
Element(8) = 108
Element(9) = 109
Element(10) = 110

Динамические массивы

Динамические массивы — это массивы, которые могут измеряться и изменяться в соответствии с потребностями программы. Вы можете объявить динамический массив с помощью оператора ReDim .

Синтаксис для оператора ReDim —

ReDim [Preserve] arrayname(subscripts)

Куда,

  • Ключевое слово Preserve помогает сохранить данные в существующем массиве при изменении его размера.

  • arrayname — имя массива для повторного измерения.

  • subscripts указывает новое измерение.

Ключевое слово Preserve помогает сохранить данные в существующем массиве при изменении его размера.

arrayname — имя массива для повторного измерения.

subscripts указывает новое измерение.

Module arrayApl
   Sub Main()
      Dim marks() As Integer
      ReDim marks(2)
      marks(0) = 85
      marks(1) = 75
      marks(2) = 90
     
      ReDim Preserve marks(10)
      marks(3) = 80
      marks(4) = 76
      marks(5) = 92
      marks(6) = 99
      marks(7) = 79
      marks(8) = 75
      
      For i = 0 To 10
         Console.WriteLine(i & vbTab & marks(i))
      Next i
      Console.ReadKey()
   End Sub
End Module

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

0	85
1	75
2	90
3	80
4	76
5	92
6	99
7	79
8	75
9	0
10	0

Многомерные массивы

VB.Net допускает многомерные массивы. Многомерные массивы также называют прямоугольными массивами.

Вы можете объявить двумерный массив строк как —

Dim twoDStringArray(10, 20) As String

или трехмерный массив целочисленных переменных —

Dim threeDIntArray(10, 10, 10) As Integer

Следующая программа демонстрирует создание и использование 2-мерного массива —

Live Demo

Module arrayApl
   Sub Main()
      ' an array with 5 rows and 2 columns
      Dim a(,) As Integer = {{0, 0}, {1, 2}, {2, 4}, {3, 6}, {4, 8}}
      Dim i, j As Integer
      ' output each array element's value '
      
      For i = 0 To 4
          For j = 0 To 1
              Console.WriteLine("a[{0},{1}] = {2}", i, j, a(i, j))
          Next j
      Next i
      Console.ReadKey()
   End Sub
End Module

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

a[0,0]: 0
a[0,1]: 0
a[1,0]: 1
a[1,1]: 2
a[2,0]: 2
a[2,1]: 4
a[3,0]: 3
a[3,1]: 6
a[4,0]: 4
a[4,1]: 8

Зубчатый массив

Jagged массив — это массив массивов. Следующий код показывает объявление зубчатого массива с именем показателей целых чисел —

Dim scores As Integer()() = New Integer(5)(){}

Следующий пример иллюстрирует использование зубчатого массива —

Live Demo

Module arrayApl
   Sub Main()
      'a jagged array of 5 array of integers
      Dim a As Integer()() = New Integer(4)() {}
      a(0) = New Integer() {0, 0}
      a(1) = New Integer() {1, 2}
      a(2) = New Integer() {2, 4}
      a(3) = New Integer() {3, 6}
      a(4) = New Integer() {4, 8}
      Dim i, j As Integer
      ' output each array element's value 
      
      For i = 0 To 4
         For j = 0 To 1
            Console.WriteLine("a[{0},{1}] = {2}", i, j, a(i)(j))
         Next j
      Next i
      Console.ReadKey()
   End Sub
End Module

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

a[0][0]: 0
a[0][1]: 0
a[1][0]: 1
a[1][1]: 2
a[2][0]: 2
a[2][1]: 4
a[3][0]: 3
a[3][1]: 6
a[4][0]: 4
a[4][1]: 8

Массив Класс

Класс Array является базовым классом для всех массивов в VB.Net. Он определяется в пространстве имен System. Класс Array предоставляет различные свойства и методы для работы с массивами.

Свойства класса Array

В следующей таблице приведены некоторые наиболее часто используемые свойства класса Array.

Sr.No Название и описание недвижимости
1

IsFixedSize

Получает значение, указывающее, имеет ли массив фиксированный размер.

2

IsReadOnly

Получает значение, указывающее, доступен ли массив только для чтения.

3

длина

Получает 32-разрядное целое число, представляющее общее количество элементов во всех измерениях массива.

4

Большая длина

Получает 64-разрядное целое число, представляющее общее количество элементов во всех измерениях массива.

5

Ранг

Получает ранг (количество измерений) массива.

IsFixedSize

Получает значение, указывающее, имеет ли массив фиксированный размер.

IsReadOnly

Получает значение, указывающее, доступен ли массив только для чтения.

длина

Получает 32-разрядное целое число, представляющее общее количество элементов во всех измерениях массива.

Большая длина

Получает 64-разрядное целое число, представляющее общее количество элементов во всех измерениях массива.

Ранг

Получает ранг (количество измерений) массива.

Методы класса Array

В следующей таблице приведены некоторые из наиболее часто используемых методов класса Array.

Sr.No Название и описание метода
1

Public Shared Sub Clear (массив как массив, индекс как целое число, длина как целое число)

Устанавливает диапазон элементов в массиве на ноль, на ложь или на ноль, в зависимости от типа элемента.

2

Public Shared Sub Copy (sourceArray As Array, destinationArray As Array, длина As Integer)

Копирует диапазон элементов из массива, начиная с первого элемента, и вставляет их в другой массив, начиная с первого элемента. Длина указывается как 32-разрядное целое число.

3

Public Sub CopyTo (массив как массив, индекс как целое число)

Копирует все элементы текущего одномерного массива в указанный одномерный массив, начиная с указанного индекса целевого массива. Индекс указывается как 32-разрядное целое число.

4

Открытая функция GetLength (измерение как целое число) как целое число

Получает 32-разрядное целое число, которое представляет количество элементов в указанном измерении массива.

5

Открытая функция GetLongLength (измерение как целое число), как долго

Получает 64-разрядное целое число, которое представляет количество элементов в указанном измерении массива.

6

Открытая функция GetLowerBound (измерение как целое число) как целое число

Получает нижнюю границу указанного измерения в массиве.

7

Открытая функция GetType As Type

Получает тип текущего экземпляра (унаследованного от объекта).

8

Открытая функция GetUpperBound (измерение как целое число) как целое число

Получает верхнюю границу указанного измерения в массиве.

9

Открытая функция GetValue (индекс как целое число) как объект

Получает значение в указанной позиции в одномерном массиве. Индекс указывается как 32-разрядное целое число.

10

Открытая общая функция IndexOf (массив как массив, значение как объект) как целое число

Ищет указанный объект и возвращает индекс первого вхождения во всем одномерном массиве.

11

Public Shared Sub Reverse (массив как массив)

Меняет последовательность элементов во всем одномерном массиве.

12

Public Sub SetValue (значение как объект, индекс как целое число)

Устанавливает значение для элемента в указанной позиции в одномерном массиве. Индекс указывается как 32-разрядное целое число.

13

Public Shared Sub Sort (массив как массив)

Сортирует элементы во всем одномерном массиве, используя реализацию IComparable каждого элемента массива.

14

Открытая переопределяемая функция ToString As String

Возвращает строку, которая представляет текущий объект (Наследуется от Object).

Public Shared Sub Clear (массив как массив, индекс как целое число, длина как целое число)

Устанавливает диапазон элементов в массиве на ноль, на ложь или на ноль, в зависимости от типа элемента.

Public Shared Sub Copy (sourceArray As Array, destinationArray As Array, длина As Integer)

Копирует диапазон элементов из массива, начиная с первого элемента, и вставляет их в другой массив, начиная с первого элемента. Длина указывается как 32-разрядное целое число.

Public Sub CopyTo (массив как массив, индекс как целое число)

Копирует все элементы текущего одномерного массива в указанный одномерный массив, начиная с указанного индекса целевого массива. Индекс указывается как 32-разрядное целое число.

Открытая функция GetLength (измерение как целое число) как целое число

Получает 32-разрядное целое число, которое представляет количество элементов в указанном измерении массива.

Открытая функция GetLongLength (измерение как целое число), как долго

Получает 64-разрядное целое число, которое представляет количество элементов в указанном измерении массива.

Открытая функция GetLowerBound (измерение как целое число) как целое число

Получает нижнюю границу указанного измерения в массиве.

Открытая функция GetType As Type

Получает тип текущего экземпляра (унаследованного от объекта).

Открытая функция GetUpperBound (измерение как целое число) как целое число

Получает верхнюю границу указанного измерения в массиве.

Открытая функция GetValue (индекс как целое число) как объект

Получает значение в указанной позиции в одномерном массиве. Индекс указывается как 32-разрядное целое число.

Открытая общая функция IndexOf (массив как массив, значение как объект) как целое число

Ищет указанный объект и возвращает индекс первого вхождения во всем одномерном массиве.

Public Shared Sub Reverse (массив как массив)

Меняет последовательность элементов во всем одномерном массиве.

Public Sub SetValue (значение как объект, индекс как целое число)

Устанавливает значение для элемента в указанной позиции в одномерном массиве. Индекс указывается как 32-разрядное целое число.

Public Shared Sub Sort (массив как массив)

Сортирует элементы во всем одномерном массиве, используя реализацию IComparable каждого элемента массива.

Открытая переопределяемая функция ToString As String

Возвращает строку, которая представляет текущий объект (Наследуется от Object).

Полный список свойств и методов класса Array см. В документации Microsoft.

пример

Следующая программа демонстрирует использование некоторых методов класса Array:

Live Demo

Module arrayApl
   Sub Main()
      Dim list As Integer() = {34, 72, 13, 44, 25, 30, 10}
      Dim temp As Integer() = list
      Dim i As Integer
      Console.Write("Original Array: ")
      
      For Each i In list
         Console.Write("{0} ", i)
      Next i
      Console.WriteLine()
      ' reverse the array
      Array.Reverse(temp)
      Console.Write("Reversed Array: ")
      
      For Each i In temp
         Console.Write("{0} ", i)
      Next i
      Console.WriteLine()
      'sort the array
      Array.Sort(list)
      Console.Write("Sorted Array: ")
      
      For Each i In list
         Console.Write("{0} ", i)
      Next i
      Console.WriteLine()
      Console.ReadKey()
   End Sub
End Module

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —