Dela via


Funktionsprocedurer (Visual Basic)

En Function procedur är en serie Visual Basic-instruktioner som omges av instruktionen Function och End Function . Proceduren Function utför en uppgift och returnerar sedan kontrollen till den anropande koden. När kontrollen returneras returneras även ett värde till den anropande koden.

Varje gång proceduren anropas körs dess instruktioner, som börjar med den första körbara instruktionen efter -instruktionen Function och slutar med den första End Function, Exit Functioneller Return -instruktionen påträffades.

Du kan definiera en Function procedur i en modul, klass eller struktur. Det är Public som standard, vilket innebär att du kan anropa det var som helst i ditt program som har åtkomst till den modul, klass eller struktur som du definierade den i.

En Function procedur kan ta argument, till exempel konstanter, variabler eller uttryck, som skickas till den av den anropande koden.

Deklarationssyntax

Syntaxen för att deklarera en Function procedur är följande:

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

Modifierarna kan ange åtkomstnivå och information om överlagring, åsidosättande, delning och skuggning. Mer information finns i Funktionsinstrukation.

Du deklarerar varje parameter på samma sätt som för underprocedurer.

Datatyp

Varje Function procedur har en datatyp, precis som varje variabel gör. Den här datatypen anges av As -satsen i -instruktionen Function och avgör datatypen för det värde som funktionen returnerar till den anropande koden. Följande exempeldeklarationer illustrerar detta.

Function Yesterday() As Date
End Function

Function FindSqrt(radicand As Single) As Single
End Function

Mer information finns i "Delar" i Funktionsinstrukation.

Returnerar värden

Värdet som en Function procedur skickar tillbaka till den anropande koden kallas för dess returvärde. Proceduren returnerar det här värdet på något av två sätt:

  • Den använder -instruktionen Return för att ange returvärdet och returnerar kontrollen direkt till det anropande programmet. I följande exempel visas detta.

    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
    
  • Det tilldelar ett värde till sitt eget funktionsnamn i en eller flera instruktioner i proceduren. Kontrollen återgår inte till det anropande programmet förrän en -instruktion eller End Function -Exit Functioninstruktion har körts. I följande exempel visas detta.

    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
    

Fördelen med att tilldela returvärdet till funktionsnamnet är att kontrollen inte returneras från proceduren förrän den stöter på en Exit Function -instruktion End Function . På så sätt kan du tilldela ett preliminärt värde och justera det senare om det behövs.

Mer information om hur du returnerar värden finns i Funktionsinstruktur. Information om hur du returnerar matriser finns i Matriser.

Anropande syntax

Du anropar en Function procedur genom att inkludera dess namn och argument på höger sida av en tilldelningsinstruklage eller i ett uttryck. Du måste ange värden för alla argument som inte är valfria och du måste omsluta argumentlistan inom parenteser. Om inga argument anges kan du utelämna parenteserna.

Syntaxen för ett anrop till en Function procedur är följande.

Argumentlista för lvalue=functionname[()]

If ((uttryck för functionname-argumentlist[()] / 3) <=) Then

När du anropar en Function procedur behöver du inte använda dess returvärde. Om du inte gör det utförs alla åtgärder i funktionen, men returvärdet ignoreras. MsgBox kallas ofta på detta sätt.

Bild av deklaration och anrop

Följande Function procedur beräknar den längsta sidan, eller hypotenuse, av en höger triangel, med tanke på värdena för de andra två sidorna.

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

I följande exempel visas ett typiskt anrop till hypotenuse.

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

Se även