Function-Prozeduren

Aktualisiert: November 2007

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 functionname[(Parameterliste)] As returntype

' 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.

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 functionname[(Parameterliste)] As returntype

    ' The following statement does not transfer control back to the calling code.

    functionname = expression

    ' 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 functionname[(Parameterliste)] As returntype

    ' The following statement immediately transfers control back to the calling code and returns the value of expression.

    Returnexpression

    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 = functionname[(Argumentliste)]

If ((functionname[(Argumentliste)] / 3) <= expression) Then

Wenn Sie eine Function-Prozedur aufrufen, müssen Sie deren Rückgabewert nicht verwenden. Falls Sie dies dennoch tun, werden sämtliche Aktionen der Funktion durchgeführt, der Rückgabewert wird jedoch ignoriert. MsgBox wird häufig 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. Dazu gehören gängige Funktionen wie Beep-Funktion, MsgBox-Funktion (Visual Basic) und StrComp-Funktion (Visual Basic). Diese Funktionen werden genauso aufgerufen wie die eigenen Function-Prozeduren.

Siehe auch

Aufgaben

Gewusst wie: Erstellen einer Prozedur, die einen Wert zurückgibt

Gewusst wie: Abrufen eines Werts aus einer Prozedur

Gewusst wie: Aufrufen einer Prozedur, die einen Wert zurückgibt

Konzepte

Prozeduren in Visual Basic

Sub-Prozeduren

Property-Prozeduren

Operatorprozeduren

Parameter und Argumente von Prozeduren

Referenz

Function-Anweisung (Visual Basic)