Sdílet prostřednictvím


Function – příkaz (Visual Basic)

Deklaruje název, parametry a definovat kód Function postupu.

[ <attributelist> ] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ] [ Async | Iterator ]
Function name [ (Of typeparamlist) ] [ (parameterlist) ] [ As returntype ] [ Implements implementslist | Handles eventlist ]
    [ statements ]
    [ Exit Function ]
    [ statements ]
End Function

Části

Termín

Definice

attributelist

Nepovinné.Viz seznam atributů.

accessmodifier

Nepovinné.Může být jeden z následujících:

Viz téma Úrovně přístupu v jazyce Visual Basic.

proceduremodifiers

Nepovinné.Může být jeden z následujících:

Shared

Nepovinné.Viz sdíleného.

Shadows

Nepovinné.Viz stíny.

Async

Nepovinné.Viz asynchronní.

Iterator

Nepovinné.Viz iterátor.

name

Povinné.Název procedury.Viz téma Deklarované názvy elementu (Visual Basic).

typeparamlist

Nepovinné.Seznam parametrů typu pro obecný postup.Viz seznamu Typ.

parameterlist

Nepovinné.Seznam parametrů tento postup představuje místní názvy proměnných.Viz téma Seznam parametrů (Visual Basic).

returntype

Required if Option Strict is On.Typ dat hodnoty vrácené tímto postupem.

Implements

Nepovinné.Označuje, že tento postup implementuje jeden nebo více Function postupy, každý z nich definované v rozhraní implementované obsahující třídu nebo strukturu tohoto postupu.Viz téma Implements – Příkaz.

implementslist

Požadováno pokud Implements je dodána.Seznam Function postupy prováděna.

implementedprocedure [ , implementedprocedure ... ]

Každý implementedprocedure má následující syntaxe a částí:

interface.definedname

Část

Description

interface

Povinné.Třída nebo struktura obsahující název rozhraní implementované tento postup.

definedname

Povinné.Název, kterým postupem je definována v interface.

Handles

Nepovinné.Označuje, že tento postup může zpracovat jeden nebo více určitých událostí.Viz téma Handles – Klauzule (Visual Basic).

eventlist

Požadováno pokud Handles je dodána.Seznam událostí, které zpracovává tento postup.

eventspecifier [ , eventspecifier ... ]

Každý eventspecifier má následující syntaxe a částí:

eventvariable.event

Část

Description

eventvariable

Povinné.Objektové proměnné deklarované pomocí datového typu třída nebo struktura, která událost vyvolává.

event

Povinné.Název události, který zpracovává tento postup.

statements

Nepovinné.Blok příkazů mají být provedeny v rámci tohoto postupu.

EndFunction

Ukončí definici tohoto postupu.

Poznámky

Uvnitř procedury musí být všechny spustitelný kód.Každý postup, je deklarována v rámci třídy, struktury nebo modul, který se nazývá obsahující třídy, struktury nebo modul.

Pokud chcete vrátit hodnotu volajícího kódu, použijte Function postupu; Jinak použijte Sub postupu.

Definování funkcí

Můžete definovat Function postup pouze na úrovni modulu.Prohlášení kontext pro funkci proto musí být třídy, struktury, modulu nebo rozhraní a nemůže být zdrojový soubor, obor názvů, postup nebo bloku.Další informace naleznete v tématu Kontexty deklarace a výchozí úrovně přístupu (Visual Basic).

FunctionVýchozí postupy pro přístup veřejnosti.Můžete upravit jejich úrovně přístupu s modifikátory přístupu.

A Function postupu můžete deklarovat datový typ hodnoty, které procedura vrací.Můžete zadat libovolný datový typ nebo název výčtu, struktura, třídy nebo rozhraní.Pokud nezadáte returntype procedura vrací parametr Object.

Pokud tento postup se používá Implements klíčové slovo obsahující třídu nebo strukturu, musí mít také Implements prohlášení, že následuje jeho Class nebo Structure prohlášení.Implements Příkaz musí zahrnovat všechna rozhraní zadané v implementslist.Však název, kterým definuje rozhraní Function (v definedname) se nemusí shodovat s názvem tohoto postupu (v name).

[!POZNÁMKA]

Lambda výrazy lze definovat vložené výrazy funkce.Další informace naleznete v tématu Function – výraz (Visual Basic) a Lambda – výrazy (Visual Basic).

Návratu z funkce

Když Function procedura vrací volajícího kódu, pokračuje spuštění s následující příkaz, který se nazývá postup prohlášení.

Vrátit hodnotu z funkce, můžete přiřadit hodnotu název funkce nebo ji zahrnout Return prohlášení.

Return Prohlášení současně přiřadí vrácenou hodnotu a ukončí funkce, jak ukazuje následující příklad.

Function myFunction(ByVal j As Integer) As Double 
    Return 3.87 * j
End Function

Následující příklad přiřazuje název funkce vrácená hodnota myFunction a použije Exit Function příkaz vrátit.

Function myFunction(ByVal j As Integer) As Double
    myFunction = 3.87 * j
    Exit Function 
End Function

Exit Function a Return příkazy způsobí okamžité opuštění Function postupu.Libovolný počet Exit Function a Return příkazy lze umístit na libovolné místo v postupu a můžete se Exit Function a Return příkazy.

Použijete-li Exit Function bez přiřazení hodnoty k name, procedura vrací výchozí hodnotu pro datový typ, který je určen v returntype.Pokud returntype není zadán, vrátí procedura Nothing, což je výchozí hodnota pro Object.

Volání funkce

Volání Function postupu pomocí název procedury a následuje seznam argumentů v závorkách výrazu.Závorky můžete vynechat pouze v případě, že nejsou dodávající žádné argumenty.Však je váš kód čitelnější, vždy zahrnout závorek.

Volání Function postupu funkce volání libovolné knihovny stejným způsobem jako Sqrt, Cos, nebo ChrW.

Můžete také volat funkci pomocí Call klíčové slovo.V takovém případě je vrácená hodnota ignorována.Použití Call ve většině případů se nedoporučuje klíčové slovo.Další informace naleznete v tématu Call – příkaz (Visual Basic).

Visual Basic někdy uspořádá aritmetické výrazů pro zvýšení vnitřní efektivity.Z tohoto důvodu byste neměli používat Function postupu v aritmetický výraz při změně funkce hodnotu proměnné ve stejném výrazu.

Asynchronní funkce

Asynchronní funkce umožňuje vyvolat asynchronní funkce bez použití explicitní volání nebo Ruční rozdělení kódu více funkcí nebo lambda výrazy.

Pokud označíte funkce se asynchronní modifikátor, můžete použít Await operátor ve funkci.Při řízení dosáhne Await výrazu Async funkce vrací řízení volajícímu a pokroku ve funkci je pozastavena až do dokončení úkolu awaited.Po dokončení úkolu spuštění můžete pokračovat ve funkci.

[!POZNÁMKA]

Async Procedura vrací volajícímu při buď nalezne první awaited objekt, který ještě není dokončena nebo na konec dostane Async postupu nastane dříve.

Async Funkce může mít návratový typ Task nebo Task.Příkladem Async funkce, která má návratový typ Task je vypsán níže.

Async Funkce nelze deklarovat všechny ByRef parametry.

A Sub – příkaz (Visual Basic) může být označena také Async modifikátor.Používá se především pro obslužné rutiny událostí, kde nelze vrátit hodnotu.AsyncSub Nelze imunofluorescenčním postup a volající AsyncSub postupu nelze zachytit výjimky, které jsou vyvolány Sub postupu.

Další informace o Async funkce, viz Asynchronní programování pomocí modifikátoru Async a operátoru Await (C# a Visual Basic), Řízení toku v asynchronních programech (C# a Visual Basic), a Asynchronní návratové typy (C# and Visual Basic).

Iterační funkce

Iterátor funkce provádí vlastní iterace v kolekci, seznamu nebo pole.Používá funkce iterační výnosu příkaz vrátit každý prvek v době.Když výnosu prohlášení je dosaženo, je zapamatované aktuální umístění v kódu.Spuštění z tohoto umístění restartován při příštím iterační funkce je volána.

Iterace volat z klientského kódu pomocí pro každý...Další prohlášení.

Návratový typ funkce iterační lze IEnumerable, IEnumerable, IEnumerator, nebo IEnumerator.

Další informace naleznete v tématu Iterátory (C# and Visual Basic).

Příklad

Následující příklad používá Function prohlášení deklarovat název, parametry a kód, který tvoří tělo Function postupu.ParamArray Modifikátor umožňuje přijímat proměnný počet argumentů funkce.

Public Function calcSum(ByVal ParamArray args() As Double) As Double
    calcSum = 0
    If args.Length <= 0 Then Exit Function 
    For i As Integer = 0 To UBound(args, 1)
        calcSum += args(i)
    Next i
End Function

Následující příklad spustí funkce deklarované v předchozím příkladu.

Module Module1

    Sub Main()
        ' In the following function call, calcSum's local variables  
        ' are assigned the following values: args(0) = 4, args(1) = 3,  
        ' and so on. The displayed sum is 10. 
        Dim returnedValue As Double = calcSum(4, 3, 2, 1)
        Console.WriteLine("Sum: " & returnedValue)
        ' Parameter args accepts zero or more arguments. The sum  
        ' displayed by the following statements is 0.
        returnedValue = calcSum()
        Console.WriteLine("Sum: " & returnedValue)
    End Sub 

    Public Function calcSum(ByVal ParamArray args() As Double) As Double
        calcSum = 0
        If args.Length <= 0 Then Exit Function 
        For i As Integer = 0 To UBound(args, 1)
            calcSum += args(i)
        Next i
    End Function 

End Module

V následujícím příkladu DelayAsync je AsyncFunction , který má návratový typ Task. DelayAsyncmá Return příkaz, který vrací celé číslo.Proto funkce prohlášení o DelayAsync musí mít návratový typ Task(Of Integer).Protože návratový typ je Task(Of Integer), hodnocení Await výraz v DoSomethingAsync vytváří celé číslo.Tento postup je znázorněn v tomto prohlášení: Dim result As Integer = Await delayTask.

startButton_Click Postupu je příkladem Async Sub postupu.Protože DoSomethingAsync je Async funkci, úkol pro volání DoSomethingAsync musí být Přáni, jak ukazuje následující příkaz: Await DoSomethingAsync().startButton_ClickSub Postupu musí být definován Async modifikátor protože má Await výrazu.

' Imports System.Diagnostics 
' Imports System.Threading.Tasks 

' This Click event is marked with the Async modifier. 
Private Async Sub startButton_Click(sender As Object, e As RoutedEventArgs) Handles startButton.Click
    Await DoSomethingAsync()
End Sub 

Private Async Function DoSomethingAsync() As Task
    Dim delayTask As Task(Of Integer) = DelayAsync()
    Dim result As Integer = Await delayTask

    ' The previous two statements may be combined into 
    ' the following statement. 
    ' Dim result As Integer = Await DelayAsync()

    Debug.WriteLine("Result: " & result)
End Function 

Private Async Function DelayAsync() As Task(Of Integer)
    Await Task.Delay(100)
    Return 5
End Function 

'  Output: 
'   Result: 5

Viz také

Úkoly

Postupy: Použití obecné třídy (Visual Basic)

Řešení potíží s procedurami (Visual Basic)

Referenční dokumentace

Sub – příkaz (Visual Basic)

Seznam parametrů (Visual Basic)

Dim – příkaz (Visual Basic)

Call – příkaz (Visual Basic)

Of – klauzule (Visual Basic)

Function – výraz (Visual Basic)

Koncepty

Procedury funkcí (Visual Basic)

Pole parametrů (Visual Basic)

Lambda – výrazy (Visual Basic)