Procedury funkcji (Visual Basic)

Procedura Function to seria instrukcji Języka Visual Basic ujęta w instrukcje Function i End Function . Procedura Function wykonuje zadanie, a następnie zwraca kontrolę do kodu wywołującego. Gdy zwraca kontrolkę, zwraca również wartość do kodu wywołującego.

Za każdym razem, gdy procedura jest wywoływana, jej instrukcje są uruchamiane, począwszy od pierwszej instrukcji wykonywalnej po Function instrukcji i kończącej się pierwszą End Functioninstrukcją , Exit Functionlub Return napotkaną.

Procedurę Function można zdefiniować w module, klasie lub strukturze. Public Jest to domyślnie możliwe wywołanie z dowolnego miejsca w aplikacji, które ma dostęp do modułu, klasy lub struktury, w której ją zdefiniowano.

Procedura Function może przyjmować argumenty, takie jak stałe, zmienne lub wyrażenia, które są przekazywane do niego przez kod wywołujący.

Składnia deklaracji

Składnia deklarowania Function procedury jest następująca:

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

Modyfikatory mogą określać poziom dostępu i informacje dotyczące przeciążenia, zastępowania, udostępniania i cieniowania. Aby uzyskać więcej informacji, zobacz Instrukcja funkcji.

Każdy parametr jest deklarowany w taki sam sposób, jak w przypadku procedur podrzędnych.

Typ danych

Każda Function procedura ma typ danych, podobnie jak każda zmienna. Ten typ danych jest określany przez klauzulę As w instrukcji Function i określa typ danych, który funkcja zwraca do kodu wywołującego. Poniższe przykładowe deklaracje ilustrują to.

Function Yesterday() As Date
End Function

Function FindSqrt(radicand As Single) As Single
End Function

Aby uzyskać więcej informacji, zobacz "Części" w instrukcji funkcji.

Zwracanie wartości

Wartość, która Function procedura wysyła z powrotem do kodu wywołującego, jest nazywana jego wartością zwracaną. Procedura zwraca tę wartość na jeden z dwóch sposobów:

  • Używa instrukcji Return , aby określić wartość zwracaną i zwraca kontrolę natychmiast do programu wywołującego. Ilustruje to poniższy przykład.

    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
    
  • Przypisuje wartość do własnej nazwy funkcji w co najmniej jednej instrukcji procedury. Kontrolka nie powraca do programu wywołującego, dopóki nie Exit Function zostanie wykonana instrukcja or End Function . Ilustruje to poniższy przykład.

    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
    

Zaletą przypisania wartości zwracanej do nazwy funkcji jest to, że kontrolka nie zwraca się z procedury, dopóki nie napotka instrukcji Exit Function or End Function . Dzięki temu można przypisać wstępną wartość i dostosować ją później w razie potrzeby.

Aby uzyskać więcej informacji na temat zwracania wartości, zobacz Instrukcja funkcji. Aby uzyskać informacje na temat zwracania tablic, zobacz Tablice.

Wywoływanie składni

Procedurę Function należy wywołać, dołączając jej nazwę i argumenty po prawej stronie instrukcji przypisania lub w wyrażeniu. Musisz podać wartości dla wszystkich argumentów, które nie są opcjonalne, i należy ująć listę argumentów w nawiasach. Jeśli nie podano żadnych argumentów, opcjonalnie można pominąć nawiasy.

Składnia wywołania Function procedury jest następująca.

lvalue=functionname[(argumentlist)]

If ((wyrażenie argumentlist)] / 3) <=functionname[() Then

Podczas wywoływania Function procedury nie trzeba używać jej wartości zwracanej. Jeśli nie, wszystkie akcje funkcji są wykonywane, ale zwracana wartość jest ignorowana. MsgBox jest często wywoływana w ten sposób.

Ilustracja deklaracji i wywołania

Poniższa Function procedura oblicza najdłuższą stronę lub hipotenuse trójkąta prawego, biorąc pod uwagę wartości pozostałych dwóch stron.

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

W poniższym przykładzie pokazano typowe wywołanie metody hypotenuse.

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

Zobacz też