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

cialis | нлп Цветной лом Новосибирск на rosmet-nsk.ru.


 

Цикл For-Each


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

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

[команды]

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

[команды] Next

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

Microsoft утверждает, что применение For-Each не будет приводить к существенному снижению быстродействия по сравнению с For-Next (как это было в VB6).

 

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

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

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 задает или изменяет количество элементов в каждом измерении, но размерность массива не изменяется.

При сохранении содержимого массива командой ReDim Preserve допускается изменение количества элементов только в последнем измерении массива.

 

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

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

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

Было бы наивно полагать, что при передаче по значению исходный аргумент после выхода из функции всегда сохраняет прежнее значение. В VB .NET состояние объекта может измениться даже в том случае, если он передавался по значению. В главе 4 эта ситуация, часто приводящая к возникновению хитроумных ошибок, рассматривается более подробно.

 

Функции

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

В режиме жесткой проверки типов (Option Strict) при объявлении функции необходимо указывать тип возвращаемого значения (в нашем примере — 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 (или последнее значение, присвоенное имени функции), определяет результат вызова.

Хотя возвращаемое значение обычно используется в программе, VB также позволяет вызвать функцию простой командой вида foo(3) без присваивания.

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

Dim bar As Short = 3

Console.WriteLinedsBetweenlAnd10(bar))

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

 

Назад Начало Вперед