Function-Prozeduren (Visual Basic)
Eine Function-Prozedur ist eine Reihe von Visual Basic-Anweisungen, die von den Anweisungen Function und End Function eingeschlossen sind. Die Function-Prozedur führt eine Aufgabe aus und gibt die Steuerung dann an den Aufrufcode zurück. Wenn sie die Steuerung zurückgibt, gibt sie auch einen Wert an den Aufrufcode zurück.
Bei jedem Aufruf der Prozedur werden ihre Anweisungen ausgeführt. Die Ausführung wird mit der ersten ausführbaren Anweisung nach der Function-Anweisung begonnen und mit der ersten auftretenden End Function-, Exit Function- oder Return-Anweisung beendet.
Sie können eine Function-Prozedur in einem Modul, einer Klasse oder Struktur definieren. Standardmäßig sind Function-Prozeduren Public, d. h. sie können überall in der Anwendung aufgerufen werden, die Zugriff auf das Modul, die Klasse oder Struktur hat, in dem bzw. der die Prozedur definiert ist.
Function-Prozeduren können Argumente (z. B. Konstanten, Variablen oder Ausdrücke) verarbeiten, die durch den Aufrufcode an sie übergeben werden.
Deklarationssyntax
Die Syntax zur Deklaration einer Function-Prozedur lautet wie folgt:
[Modifizierer] Function Funktionsname[(Parameterliste)] As Rückgabetyp
' Statements of the Function procedure.
End Function
Mithilfe von Modifizierern werden die Zugriffsebene und Informationen zum Überladen, Überschreiben, Freigeben und Shadowing angegeben. Weitere Informationen hierzu finden Sie unter Function-Anweisung (Visual Basic).
Sie deklarieren alle Parameter auf die gleiche Weise wie Sub-Prozeduren (Visual Basic).
Datentyp
Ebenso wie Variablen weisen auch Function-Prozeduren einen Datentyp auf. Der Datentyp wird durch die As-Klausel in der Function-Anweisung festgelegt. Er bestimmt den Datentyp des Werts, den die Funktion an den Aufrufcode zurückgibt. Die folgenden Beispieldeklarationen verdeutlichen dies.
Function yesterday() As Date
End Function
Function findSqrt(ByVal radicand As Single) As Single
End Function
Weitere Informationen finden Sie im Abschnitt "Bestandteile" unter Function-Anweisung (Visual Basic).
Rückgabewerte
Der von einer Function-Prozedur an das aufrufende Programm zurückgesendete Wert wird als Rückgabewert bezeichnet. Die Prozedur gibt den Wert auf zwei Arten zurück:
Sie weist ihrem eigenen Funktionsnamen in mindestens einer Anweisung der Prozedur einen Wert zu. Die Steuerung wird solange nicht an das aufrufende Programm zurückgegeben, bis eine Exit Function oder End Function ausgeführt wird. Dies wird anhand des folgenden Beispiels veranschaulicht:
Function Funktionsname[(Parameterliste)] As Rückgabetyp
' The following statement does not transfer control back to the calling code.
Funktionsname = Ausdruck
' When control returns to the calling code, expression is the return value.
End Function
Hier wird mit der Return-Anweisung der Rückgabewert angegeben, und die Steuerung wird sofort an das aufrufende Programm zurückgegeben. Dies wird anhand des folgenden Beispiels veranschaulicht:
Function Funktionsname[(Parameterliste)] As Rückgabetyp
' The following statement immediately transfers control back to the calling code and returns the value of expression.
Return Ausdruck
End Function
Der Vorteil beim Zuweisen des Rückgabewerts an den Funktionsnamen liegt darin, dass die Prozedur die Steuerung erst zurückgibt, wenn das Programm die Anweisung Exit Function oder End Function erreicht. Dadurch können Sie einen vorläufigen Wert zuweisen und diesen gegebenenfalls später korrigieren.
Weitere Informationen finden Sie im Abschnitt "Rückgabewert" unter Function-Anweisung (Visual Basic).
Zurückgeben von Arrays
Wenn die Function-Prozedur einen Arraydatentyp zurückgibt, können Sie innerhalb der Funktion nicht auf die einzelnen Elemente des Arrays zugreifen. Einen entsprechenden Versuch legt der Compiler als rekursiven Aufruf der Prozedur aus. Dies wird anhand des folgenden Beispiels veranschaulicht:
Function allOnes(ByVal n As Integer) As Integer()
For i As Integer = 1 To n - 1
' The following statement generates a COMPILER ERROR.
allOnes(i) = 1
Next i
' The following statement generates a COMPILER ERROR.
Return allOnes()
End Function
Im vorherigen Beispiel interpretiert der Compiler die versuchte Zuweisung allOnes(i) = 1 als Aufruf von allOnes auf der linken Seite einer Zuweisungsanweisung. Er interpretiert die versuchte Return allOnes()-Anweisung als Aufruf ohne Argument. Beide Anweisungen generieren Compilerfehler.
Aufrufsyntax
Zum Aufrufen einer Function-Prozedur geben Sie deren Namen und die Argumente entweder auf der rechten Seite einer Zuweisungsanweisung oder in einem Ausdruck an. Sie müssen Werte für alle nicht optionalen Argumente angeben und die Argumentliste in Klammern setzen. Wenn keine Argumente angegeben werden, können Sie die Klammern auch weglassen.
Die Syntax für den Aufruf einer Function-Prozedur lautet wie folgt:
lvalue = Funktionsname[(Argumentliste)]
If ((Funktionsname[(Argumentliste)] / 3) <= Ausdruck) Then
Wenn Sie eine Function-Prozedur aufrufen, müssen Sie deren Rückgabewert nicht verwenden. In diesem Fall werden sämtliche Aktionen der Funktion durchgeführt, der Rückgabewert wird jedoch ignoriert. MsgBox wird oft auf diese Weise aufgerufen.
Veranschaulichung von Deklaration und Aufruf
Mit der folgenden Function-Prozedur wird die längste Seite (die Hypotenuse) eines rechtwinkligen Dreiecks anhand der Werte der beiden anderen Seiten berechnet.
Function hypotenuse(ByVal side1 As Single, ByVal side2 As Single) As Single
Return Math.Sqrt((side1 ^ 2) + (side2 ^ 2))
End Function
Im folgenden Beispiel wird ein typischer Aufruf von hypotenuse gezeigt.
Dim testLength, testHypotenuse As Single
testHypotenuse = hypotenuse(testLength, 10.7)
Visual Basic-Laufzeitfunktionen
Die Visual Basic-Laufzeit stellt viele Funktionen bereit, die im Microsoft.VisualBasic-Namespace definiert sind. Hierzu zählen häufig verwendete Funktionen wie Beep, MsgBox und StrComp. Diese Funktionen werden genauso aufgerufen wie die eigenen Function-Prozeduren.
Siehe auch
Aufgaben
Gewusst wie: Erstellen einer Prozedur, die einen Wert zurückgibt (Visual Basic)
Gewusst wie: Zurückgeben eines Werts aus einer Prozedur (Visual Basic)
Gewusst wie: Aufrufen einer Prozedur, die einen Wert zurückgibt (Visual Basic)
Referenz
Function-Anweisung (Visual Basic)
Konzepte
Eigenschaftenprozeduren (Visual Basic)