Sdílet prostřednictvím


Příkaz funkce (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 prvků (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 Implementuje prohlášení.

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

ČástDescription
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 Klauzule Handles (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

ČástDescription
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 Prohlášení kontextů a úrovně přístupu výchozí (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 Výraz funkce (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 Volání výpisu (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<TResult> nebo Task.Příkladem Async funkce, která má návratový typ Task<TResult> je vypsán níže.

Async Funkce nelze deklarovat všechny ByRef parametry.

A Příkaz Sub (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í asynchronní pro programování a očekávat (C# a Visual Basic), Řízení toku v programech asynchronní (C# a Visual Basic), a Typy vrácení asynchronní (C# a 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<T>, IEnumerator, nebo IEnumerator<T>.

Další informace naleznete v tématu U iterátorů (C# a 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<TResult>. 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

Jak: použití obecného třídy (Visual Basic)

Postupy řešení potíží (Visual Basic)

Referenční dokumentace

Příkaz Sub (Visual Basic)

Seznam parametrů (Visual Basic)

Dim prohlášení (Visual Basic)

Volání výpisu (Visual Basic)

Klauzule (Visual Basic)

Výraz funkce (Visual Basic)

Koncepty

Procedury typu Function (Visual Basic)

Parametr matice (Visual Basic)

Lambda výrazy (Visual Basic)