Sdílet prostřednictvím


Příkaz Sub (Visual Basic)

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

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

Části

Termín

Definice

attributelist

Nepovinné.Viz seznam atributů.

Partial

Nepovinné.Označuje definici částečné metody.Viz téma Částečné metody (Visual Basic).

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í.

name

Povinné.Název procedury.Viz téma Deklarovaný názvy prvků (Visual Basic).Vytvoření procedury konstruktor pro třídu, nastavit název Sub postup New klíčové slovo.Další informace naleznete v tématu Životnost objektu: Vytváření objektů a zničeny (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).

Implements

Nepovinné.Označuje, že tento postup implementuje jeden nebo více Sub 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 Sub 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ů spustit v rámci tohoto postupu.

EndSub

Ukončí definici tohoto postupu.

Poznámky

Uvnitř procedury musí být všechny spustitelný kód.Použití Sub postupu, pokud nechcete vrátit hodnotu volajícího kódu.Použití Function postupu, když chcete vrátit hodnotu.

Definování proceduru typu Sub

Můžete definovat Sub postup pouze na úrovni modulu.Prohlášení kontext pro proceduru sub 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).

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

Pokud procedura používá Implements klíčové slovo obsahující třídu nebo strukturu, musí mít 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í Sub (v definedname) nemusí odpovídat názvu tohoto postupu (v name).

Vracení z procedury Sub

Když Sub procedura vrací volajícího kódu, pokračuje spuštění s příkaz po příkazu, který ji zavolal.

Následující příklad ukazuje návrat z Sub postupu.

Sub mySub(ByVal q As String)
    Return
End Sub 

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

Volání procedury Sub

Volání Sub postupu v příkazu pomocí název procedury a se tento název s jeho seznamu argumentů v závorkách.Závorky můžete vynechat pouze v případě, že nezadáte žádné argumenty.Však je váš kód čitelnější, vždy zahrnout závorek.

A Sub postupu a Function postupu můžete mít parametry a provést posloupnost příkazů.Však Function procedura vrací hodnotu a Sub nemá postup.Proto nelze použít Sub postupu ve výrazu.

Můžete použít Call klíčové slovo při volání Sub postup, ale toto slovo není doporučeno pro většinu použití.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.Proto pokud argument seznam obsahuje výrazy, které volají jiné postupy neměly berete že výrazy bude volán v určitém pořadí.

Procedury typu Sub asynchronní

Pomocí funkce asynchronní může 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 procedura asynchronní modifikátor, můžete použít Await operátor v postupu.Při řízení dosáhne Await výrazu Async postupu vrací řízení volajícímu a pokroku v postupu je pozastavena až do dokončení úkolu awaited.Po dokončení úkolu spuštění můžete pokračovat v postupu.

[!POZNÁMKA]

Async Procedura vrací volajícímu při zjištění buď první awaited objekt, který ještě není dokončena nebo konec Async postupu je dosaženo, co nastane dříve.

Můžete také označit Příkaz funkce (Visual Basic) se Async modifikátor.Async Funkce může mít návratový typ Task<TResult> nebo Task.Příklad později v tomto tématu ukazuje Async funkce, která má návratový typ Task<TResult>.

AsyncSubpostupy jsou primárně 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, Sub vyvolá postup.

Async Postupu nelze deklarovat všechny ByRef parametry.

Další informace o Async postupy, 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).

Příklad

Následující příklad používá Sub příkaz definovat název, parametry a kód, který tvoří tělo Sub postupu.

Sub computeArea(ByVal length As Double, ByVal width As Double)
    ' Declare local variable.
    Dim area As Double
    If length = 0 Or width = 0 Then
        ' If either argument = 0 then exit Sub immediately.
        Exit Sub
    End If
    ' Calculate area of rectangle.
    area = length * width
    ' Print area to Immediate window.
    Debug.WriteLine(area)
End Sub

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é, jak ukazuje následující příkaz: 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í imunofluorescenčním, 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

Implementuje prohlášení

Příkaz funkce (Visual Basic)

Seznam parametrů (Visual Basic)

Dim prohlášení (Visual Basic)

Volání výpisu (Visual Basic)

Klauzule (Visual Basic)

Koncepty

Parametr matice (Visual Basic)

Částečné metody (Visual Basic)