Процедуры. Преждевременный выход из функций или процедур.
В отличие от функций, процедуры не возвращают конкретных значений. Вызов процедур осуществляется по имени. Непустые списки аргументов всегда заключаются в круглые скобки. В приведенном ниже примере строка с вызовом процедуры выделена жирным шрифтом:
Option Strict On Module Modulel Sub ShowBottlesOfBeer(ByVal nbot As Integer) Console.WriteLine(nbot & " bottles of beer on the wall") Console.Writeline(nbot & " bottles of beer.") Console.WriteLine("if one of those bottles hsould happen to fall") Console.WriteLine(nbot -1&" bottles of beer on the wall") End Sub Sub Main() Dim I As Integer For I = 10 To 1 Step -1 ShowBottlesOfBeer(I) Next Console.WriteLine("All beer gone…") Console. ReadLine() End Sub End Module
При вызове процедур указывать ключевое слово Sub не обязательно. Строку с вызовом процедуры из приведенного выше примера можно было записать и в таком виде:
Call ShowBottlesOfBeer(I)
Заголовок процедуры должен содержать объявления всех параметров с ключевыми словами ByVal или ByRef (по умолчанию используется ByVal, то есть передача по значению):
Sub имя_процедуры(В(ByVа1 аргумент1 As тип. ByVal аргумент2 As тип, ….) [команды] End Sub
При вызове процедуры в форме имя_процедуры(аргумент1, аргумент2,…) или Call имя_процедуры(аргумент1. аргумент2,…) VB.NET создает копии данных-аргументов и выполняет код, содержащийся в теле процедуры (поскольку в отличие от предыдущих версий по умолчанию параметры передаются по значению).
Преждевременный выход из функций или процедур
В некоторых ситуациях требуется покинуть функцию до того, как будет достигнута стандартная точка выхода (например, если проверка покажет, что исходные данные неверны и дальнейшие вычисления бессмысленны). Команда Return немедленно передает управление вызывающей стороне (если не определена секция Finally – см. главу 7):
Function BallOut (X As Double) As Double If X < 0 Then Return 0' Вернуть фиктивное значение Else ' Основные действия End If End Function 'Выход из процедур осуществляется командой Exit Sub.