3.6 Funktionen und Prozeduren
 
3.6.1 Aufbau
 
Funktionen haben unter VB.NET diesen Aufbau:
Function func (optionale Parameterliste) As Rückgabetyp
' ...
Return Rückgabetyp
End Function
Der Aufruf von Return Rückgabetyp kann entfallen, wenn innerhalb der Funktion eine direkte Zuweisung an den Funktionsnamen stattfindet, etwa so:
func = 25
Der einzige Unterschied zwischen Prozeduren und Funktionen besteht darin, dass Prozeduren keinen Rückgabetyp haben. Über Parameter, die als Referenz übergeben werden, kann aber auch eine Prozedur Variablen zum Aufrufer zurückliefern.
Sub mySub (optionale Parameterliste)
' ...
End Sub
3.6.2 Übergabe von Parametern
 
Wenn nicht anders angegeben, werden Parameter in VB.NET als Wert übergeben. Ob Wertübergabe oder Referenzübergabe gelten soll, kann außerdem mit den Schlüsselwörtern ByVal und ByRef ausdrücklich festgelegt werden. Die beiden folgenden Prozeduren in vb_04.aspx verdeutlichen den Gebrauch von Wert- und Referenzübergabe.
Sub Page_Load (ByVal Sender As Object, _
ByVal E As EventArgs)
Dim a, b, c As String
a = "Original"
b = "Original"
c = "Original"
myFunc (a, b, c)
ausgabe.innerText = a & " – " & b & " – " & c
' Ausgabe: "Original – Original – geändert"
End Sub
' p1: Wertübergabe
' p2: Wertübergabe
' p3: Referenzübergabe
Sub myFunc (p1 As String, _
ByVal p2 As String, _
ByRef p3 As String)
p1 = "geändert"
p2 = "geändert"
p3 = "geändert"
End Sub
Optionale Parameter
Es ist möglich, optionale Parameter zu definieren. Ein solcher Parameter, der beim Aufruf auch weggelassen werden kann, muss am Ende der Parameterliste stehen und einen Default-Wert bekommen, der verwendet wird, wenn der Aufrufer keinen Wert angibt.
Sub myFunc (p1 As String, _
ByVal p2 As String, _
ByRef p3 As String, _
Optional ByVal p4 As String = "so und so")
' ...
End Sub
Variable Anzahl an Parametern
Außerdem ist es möglich, eine beliebige Anzahl von Parametern zu übergeben, indem ein Array mit dem Schlüsselwort ParamArray übergeben wird. Die Funktion summe() in vb_05.aspx kann mit beliebig vielen Parametern aufgerufen werden. Stets gibt sie die Summe aller übergebenen Variablen zurück.
Sub Page_Load (ByVal Sender As Object, _
ByVal E As EventArgs)
Dim a, b, c As Single
Dim erg As Double
a = 1.5
b = 2.5
c = 38.0
erg = summe (a, b, c)
ausgabe.innerText = CStr(erg) ' 42
End Sub
Function summe _
(ByVal ParamArray summanden() As Single) As Double
Dim i As Integer
For i = 0 To summanden.GetUpperBound(0)
summe += summanden(i)
Next
Return summe
End Function
Da innerhalb der Funktion zunächst noch nicht feststeht, wie viele Parameter tatsächlich übergeben wurden, wird der höchste Indexwert des Arrays mit GetUpperBound(0) ermittelt. Dieser Aufruf ermittelt den oberen Indexwert für die erste Dimension des Arrays, wobei das übergebene Array in diesem Fall auch nur über eine Dimension verfügt. Mit einer For-Schleife werden anschließend alle Werte summiert.
|