3. Аргументы. Способы передачи аргументов в vb
Процедуры могут использовать аргументы, список которых (при необходимости с указанием типа), размещают в скобках после имени процедуры. В процедурах событий набор аргументов зависит от события и не может быть изменен разработчиком:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _ X As Single,Y As Single)
End Sub
В общих процедурах количество и порядок используемых аргументов определяется разработчиком.
Cинтаксиса аргумента:
[ByVal/ByRef]ИмяАргумента[()][As ИмяТипа]
В VB аргументы могут передаваться двумя способами:
1) как ссылки (ByRef). В этом случае подпрограмма получает физический адрес памяти передаваемой переменной;
2) как значение (ByVal). В этом случае вызванная подпрограмма получает копию значения.
Для того чтобы передать аргумент как ссылку, следует перед аргументом указать ключевое слово ByRef. Однако, поскольку по умолчанию аргументы в Visual Basic именно так и передаются, ByRef можно опустить.
Массив в подпрограмму всегда передается в виде ссылки.
Именованные аргументы
Для многих встроенных функций, операторов и методов Visual Basic обеспечивает возможность использования именованных аргументов для упрощения ввода их значений. Обычно аргументы передают в последовательности,указанной в заголовке процедуры:
Private Sub Cominandl_Click ()
SomeProcedure 1,2,3
End Sub
Sub SomeProcedure (aOne, aTwo, aThree)
Print aOne,aTwo,aThree 'вывод:123
End Sub
Использование именованных аргументов позволяет передавать часть или все аргументы в любом порядке. Для этого при вызове процедуры указывается имя аргумента и его значение, разделяемые специальным знаком - двоеточием со знаком равенства (:=), например, MyArgument := "someValue". Аргументы разграничиваются запятыми; порядок их следования значения не имеет:
Private Sub Commandl_Click ()
SomeProcedure aThree:=3,aTwo:=2,a0ne:=l
End Sub
Sub SomeProcedure (aOne,aTwo,aThree)
4. Вызов общих процедур и функций
Чтобы код общей функции или процедуры был выполнен, она должна быть вызвана.
Вызов процедуры осуществляется вставкой ее имени в текст программы. Сразу после имени должны следовать аргументы процедуры, если таковые предусмотрены.
ИмяПроцедуры[Аргумент1, Аргумент2, … ,АргументN]
Например, вызов процедуры, которая вычисляет значение sum суммы n элементов одномерного массива x, может выглядеть так:
Сумма n, x, sum
Обратите внимание на то, что список аргументов процедуры не заключен в скобки.
Другой способ вызова процедуры заключается в использовании зарезервированного слова Call (вызов), при этом за ним должно следовать имя процедуры и далее может быть заключенный в круглые скобки список аргументов:
Call ИмяПроцедуры[(Аргумент1, Аргумент2, … , АргументN)]
Например:
Call Сумма (n, x, sum)
В отличие от процедуры функция возвращает значение результата в точку вызова. В остальном же ее вызов подобен вызову процедуры. Чтобы функция могла вернуть значение, ее вызов должен осуществляться из выражения, в котором она играет роль элемента этого выражения. Обращение к функции имеет синтаксис:
ИмяФункции([Аргумент1, Аргумент2, … , АргументN])
Например, обращение к функции Сумма1 происходит дважды в выражении:
а * Сумма1(n,x) + Сумма1(m,y).