Массивы с индексацией элементов в заданном интервале. Цикл For-Each.
Утверждение о том, что индексация массивов всегда начинается с 0, не совсем точно. Теоретически можно определять массивы с заданной верхней и нижней границей индекса, но из-за неудобного синтаксиса и снижения быстродействия вряд ли вам захочется это делать. В следующем фрагменте создается массив с индексацией элементов от 1995 до 2002:
Sub Main() Dim anArray As Array Dim i As Integer Dim i(0) As Integer Dim lowerBounds(0) As Integer i(O) = 7 lowerBounds(0) = 1995 ' Создать массив с индексами 1995-2002 аnАrrау = Array.CreateInstance(GetType(System.Int32). 1 .lowerBounds) anArray.SetValue(200000, 1995) anArray.SetValue(1000000. 2001) Console.WriteLine("The entry in position 1995 is " & _ (anArray.GetValue(1995).ToString)) Console.WriteLine("The entry in position 2002 is " & _ (anArray.GetValue(2001).ToString)) Console. ReadLine() End Sub
Присваивание выполняется методом SetValue (значение,индекс), а чтение – методом GetValue (индекс). Но если массив создается подобным образом в режиме жесткой проверки типов, вам придется позаботиться о том, чтобы присваиваемое значение было преобразовано к правильному типу!
Цикл For-Each
Содержимое массива часто перебирается в цикле от 0 до UBound (массив), однако вы также можете воспользоваться конструкцией For-Each. Синтаксис For-Each выглядит следующим образом:
For Each переменная In массив [команды] [Exit For при необходимости] [команды] Next
Конструкция For-Each универсальна и может использоваться в тех случаях, когда структура данных поддерживает итеративный перебор элементов. За подробностями обращайтесь к главе 4.
Примечание
Microsoft утверждает, что применение For-Each не будет приводить к существенному снижению быстродействия по сравнению с For-Next (как это было в VB6).