Cамоучитель по VB.NET


              

Цикл For-Each


Содержимое массива часто перебирается в цикле от 0 до UBound(массив), однако вы также можете воспользоваться конструкцией For-Each. Синтаксис For-Each выглядит следующим образом:

For Each переменная In массив

[команды]

[Exit For при необходимости]

[команды] Next

Конструкция For-Each универсальна и может использоваться в тех случаях, когда структура данных поддерживает итеративный перебор элементов. За подробностями обращайтесь к главе 4.


 

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

Массивы не ограничиваются одним измерением. Допустим, вы хотите сохранить таблицу умножения в матричном виде. Примерное решение может выглядеть так:

Dim mulTable(11.11) As Integer

' Создает массив 12x12

Dim i As Integer, j As Integer

For i = 0 To 11

For j = 0 To 11

mulTable(i.j) = (i+l)*(j+l)

Next j

Next i

Размеры массивов в VB .NET могут изменяться, но количество измерений должно оставаться постоянным.

Многомерный массив с неопределенным количеством элементов объявляется при помощи запятых. Следующий пример показывает, как объявить трехмерный массив:

Dim salesByDivision( , , ) As Decimal

Команда ReDim задает или изменяет количество элементов в каждом измерении, но размерность массива не изменяется.


 

Процедуры и функции

Раньше выбор между процедурой (Sub) и функцией (Function) определялся простым критерием: если вы собирались использовать возвращаемое значение, следовало выбирать функцию, а если нет — процедуру. Мы рекомендуем придерживаться этой модели, хотя ничто не мешает проигнорировать возвращаемое значение функции. В объектно-ориентированных программах функции и процедуры обычно включаются в классы и называются методами.

В VB .NET, как и во многих языках программирования, существуют два способа передачи параметров функциям и процедурам: передача по ссылке и передача по значению. Когда параметр передается по ссылке, его изменения внутри функции приведут к изменению исходного аргумента после выхода из функции. По умолчанию в VB .NET параметры передаются по значению (а в VB6 — по ссылке).


 

Функции

Чтобы создать новую функцию или процедуру в окне программы, установите курсор за пределами других процедур и функций и начинайте вводить заголовок процедуры или функции. Как только вы нажмете клавишу Enter, редактор IDE автоматически создаст команду End правильного типа (End Functi on или End Sub). Ниже приведен заголовок функции, которая получает целый параметр по значению и возвращает логическую величину (True или False) в зависимости от того, принадлежит ли переданный параметр интервалу от 1 до 10: Function IsBetweenlAnd10(ByVal num As Integer) As Boolean


Полный текст модуля с функций Is Between lAnd 10 приведен ниже. Порядок следования функций не важен — функция Sub Mai n может находиться и после определения функции, которая в ней используется.

Module Modulel

Function IsBetweenlAnd10 (ByVal num As Integer) As Boolean

If num >= 1 And num <=10 Then

Return True

Else

Return False

End If

End Function

Sub Main()

Console. WriteLinedsBetweenlAnd100))

Console. ReadLine()

End Sub

End Module

В VB .NET при вызове функции или процедуры непустой список параметров всегда заключается в круглые скобки, как в строке с вызовом Console.WriteLine: IsBetweenlAnd100)

Обратите внимание на ключевое слово Return. При выполнении команды Return функция завершается и возвращает значение, указанное после Return (значение должно быть определенным — возвращение аналога voi d не допускается). Также поддерживается синтаксис с присваиванием имени функции, использовавшийся в прежних версиях VB:

Function IsBetweenlAnd10(ByVal num As Integer) As Boolean

If num >= 1 And num <= 10 Then

IsBetweenlAnd10 = True Else

IsBetweenlAnd10= False

End If

End Function

Использование Return — дело вкуса. Команда Return нагляднее и проще, но старый синтаксис оставляет управление внутри функции, а это иногда бывает удобно.

Обобщенная форма определения функции выглядит следующим образом:

Function имя_функции (аргумент1, аргумент2, ...) As тип

команды

Return выражение ' или имя_функции = выражение

End Function

где аргумент1 и аргумент2 — переменные. Имена функций подчиняются тем же правилам, что и имена переменных. При вызове функции VB .NET выполняет команды, содержащиеся в определении функции. Значение, указанное после Return (или последнее значение, присвоенное имени функции), определяет результат вызова.


Обычно количество аргументов, передаваемых при вызове функции, должно совпадать с количеством параметров в ее определении. Типы аргументов должны быть совместимы с типами соответствующих параметров, при этом автоматически выполняются только расширяющие преобразования. Например, следующий фрагмент допустим, поскольку преобразование Short в Integer не приводит к потере данных:

Dim bar As Short = 3

Console.WriteLinedsBetweenlAnd10(bar))

VB .NET позволяет создавать функции с переменным числом аргументов. Дополнительная информация приведена далее в этой главе.