Funktionsprozeduren (Visual Basic)

Eine Function-Prozedur ist eine Reihe von Visual Basic-Anweisungen, die von den Function- und End Function-Anweisungen eingeschlossen werden. Die Function-Prozedur führt eine Aufgabe aus und gibt dann die Steuerung an den aufrufenden Code zurück. Wenn das Steuerelement zurückgegeben wird, wird auch ein Wert an den aufrufenden Code zurückgegeben.

Jedes Mal, wenn die Prozedur aufgerufen wird, werden ihre Anweisungen ausgeführt, beginnend mit der ersten ausführbaren Anweisung nach der Function-Anweisung und endend mit der ersten gefundenen End Function-, Exit Function- oder Return-Anweisung.

Sie können eine Function-Prozedur in einem Modul, einer Klasse oder einer Struktur definieren. Dies ist standardmäßig Public, was bedeutet, dass Sie sie von überall in Ihrer Anwendung aufrufen können, die Zugriff auf das Modul, die Klasse oder die Struktur hat, in der Sie sie definiert haben.

Eine Function-Prozedur kann Argumente wie Konstanten, Variablen oder Ausdrücke annehmen, die vom aufrufenden Code an sie übergeben werden.

Deklarationssyntax

Die Syntax zum Deklarieren einer Function-Prozedur lautet wie folgt:

[Modifiers] Function FunctionName [(ParameterList)] As ReturnType
    [Statements]
End Function

Die Modifizierer können die Zugriffsebene und Informationen zum Überladen, Überschreiben, Freigeben und Überschatten angeben. Weitere Informationen finden Sie unter Funktionsanweisung.

Sie deklarieren jeden Parameter auf die gleiche Weise wie für Sub-Prozeduren.

Datentyp

Jede Function-Prozedur hat, genau wie jede Variable, einen Datentyp. Dieser Datentyp wird durch die As-Klausel in der Function-Anweisung angegeben und bestimmt den Datentyp des Werts, den die Funktion an den aufrufenden Code zurückgibt. Die folgenden Beispieldeklarationen veranschaulichen dies.

Function Yesterday() As Date
End Function

Function FindSqrt(radicand As Single) As Single
End Function

Weitere Informationen finden Sie unter „Teile“ unter Funktionsanweisung.

Zurückgeben von Werten

Der Wert, den eine Function-Prozedur an den aufrufenden Code zurücksendet, wird als Rückgabewert bezeichnet. Die Prozedur gibt diesen Wert auf eine von zwei Arten zurück:

  • Sie verwendet die Return-Anweisung, um den Rückgabewert anzugeben, und gibt das Steuerelement sofort an das aufrufende Programm zurück. Dies wird anhand des folgenden Beispiels veranschaulicht.

    Function FunctionName [(ParameterList)] As ReturnType
        ' The following statement immediately transfers control back
        ' to the calling code and returns the value of Expression.
        Return Expression
    End Function
    
  • Sie weist ihrem eigenen Funktionsnamen in einer oder mehreren Anweisungen der Prozedur einen Wert zu. Das Steuerelement kehrt erst dann an das aufrufende Programm zurück, wenn eine Exit Function- oder End Function-Anweisung ausgeführt wird. Dies wird anhand des folgenden Beispiels veranschaulicht.

    Function FunctionName [(ParameterList)] 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
    

Der Vorteil des Zuweisens des Rückgabewerts zum Funktionsnamen besteht darin, dass das Steuerelement erst von der Prozedur zurückgegeben wird, wenn eine Exit Function- oder End Function-Anweisung gefunden wird. Dadurch können Sie einen vorläufigen Wert zuweisen und ihn bei Bedarf später anpassen.

Weitere Informationen zum Zurückgeben von Werten finden Sie unter Funktionsanweisung. Weitere Informationen zur Rückgabe von Arrays finden Sie unter Arrays.

Syntax aufrufen

Sie rufen eine Function-Prozedur auf, indem Sie den Namen und die Argumente entweder auf der rechten Seite einer Zuweisungsanweisung oder in einen Ausdruck einschließen. Sie müssen Werte für alle Argumente angeben, die nicht optional sind, und Sie müssen die Argumentliste in Klammern einschließen. Wenn keine Argumente angegeben werden, können Sie optional die Klammern weglassen.

Die Syntax zum Aufruf einer Function-Prozedur lautet wie folgt.

lvalue=functionname[(argumentlist)]

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

Wenn Sie eine Function-Prozedur aufrufen, müssen Sie den Rückgabewert nicht verwenden. In diesem Fall werden alle Aktionen der Funktion ausgeführt, aber der Rückgabewert wird ignoriert. MsgBox wird häufig auf diese Weise aufgerufen.

Abbildung der Deklaration und des Aufrufs

Die folgende Function-Prozedur berechnet die längste Seite bzw. Hypotenuse eines rechtwinkligen Dreiecks, wenn die Werte für die anderen beiden Seiten angegeben sind.

Function Hypotenuse(side1 As Double, side2 As Double) As Double
    Return Math.Sqrt((side1 ^ 2) + (side2 ^ 2))
End Function

Das folgende Beispiel zeigt einen typischen Aufruf von hypotenuse.

Dim testLength, testHypotenuse As Double
testHypotenuse = Hypotenuse(testLength, 10.7)

Weitere Informationen