Sub — Instrukcja (Visual Basic)
Deklaruje nazwę, parametry i kod, który Sub procedury.
[ <attributelist> ] [ Partial ] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ] [ Async ]
Sub name [ (Of typeparamlist) ] [ (parameterlist) ] [ Implements implementslist | Handles eventlist ]
[ statements ]
[ Exit Sub ]
[ statements ]
End Sub
Części
Termin |
Definicja |
||||||
attributelist |
Opcjonalne.Zobacz listy atrybutów. |
||||||
Partial |
Opcjonalne.Wskazuje definicję metody częściowe.Zobacz Metody częściowe (Visual Basic). |
||||||
accessmodifier |
Opcjonalne.Może być jedną z następujących czynności: Zobacz Poziomy dostępu w Visual Basic. |
||||||
proceduremodifiers |
Opcjonalne.Może być jedną z następujących czynności:
|
||||||
Shared |
Opcjonalne.Zobacz wspólne. |
||||||
Shadows |
Opcjonalne.Zobacz cienie. |
||||||
Async |
Opcjonalne.Zobacz asynchroniczne. |
||||||
name |
Wymagane.Nazwa procedury.Zobacz Zadeklarowane nazwy elementów (Visual Basic).Aby utworzyć procedurę konstruktora dla klasy, należy ustawić nazwę Sub procedurę, aby New słowa kluczowego.Aby uzyskać więcej informacji, zobacz Okres istnienia obiektów: w jaki sposób obiekty są tworzone i niszczone (Visual Basic). |
||||||
typeparamlist |
Opcjonalne.Lista parametrów typu rodzajowego procedury.Zobacz z listy Typ. |
||||||
parameterlist |
Opcjonalne.Lista nazwy zmiennych lokalnych reprezentujących parametry tej procedury.Zobacz Lista parametrów (Visual Basic). |
||||||
Implements |
Opcjonalne.Wskazuje, że procedura ta implementuje jednego lub więcej Sub procedury, każdy z nich zdefiniowane w interfejsie implementowane przez klasy lub struktury zawierające tę procedurę.Zobacz Implements — Instrukcja. |
||||||
implementslist |
Wymagany, jeżeli Implements jest dostarczany.Lista Sub procedury są wdrażane. implementedprocedure [ , implementedprocedure ... ] Każdy implementedprocedure ma następującą składnię i części: interface.definedname
|
||||||
Handles |
Opcjonalne.Wskazuje, że procedura ta może obsługiwać jeden lub więcej określonych zdarzeń.Zobacz Handles — Klauzula (Visual Basic). |
||||||
eventlist |
Wymagany, jeżeli Handles jest dostarczany.Lista zdarzeń, który obsługuje tę procedurę. eventspecifier [ , eventspecifier ... ] Każdy eventspecifier ma następującą składnię i części: eventvariable.event
|
||||||
statements |
Opcjonalne.Blok instrukcji, aby uruchomić w ramach tej procedury. |
||||||
EndSub |
Kończy definicję tej procedury. |
Uwagi
Cały kod wykonywalny musi być wewnątrz procedury.Użycie Sub procedury, gdy nie chcesz zwrócić wartość do kodu wywołującego.Użycie Function procedury, gdy ma zostać zwrócona wartość.
Definiowanie procedurę typu Sub
Można zdefiniować Sub procedura tylko na poziomie modułu.W kontekście deklaracji procedurę typu sub dlatego należy klasy, struktury, moduł lub interfejs i nie może być plikiem źródłowym, obszaru nazw, procedury lub bloku.Aby uzyskać więcej informacji, zobacz Kontekst deklaracji i domyślne poziomy dostępu (Visual Basic).
SubDomyślnie procedur dostępu publicznego.Można dostosować ich poziomy dostępu za pomocą modyfikatorów dostępu.
Jeśli procedura używa Implements musi mieć słowa kluczowego, zawierający klasy lub struktury Implements instrukcji następującej bezpośrednio jej Class lub Structure instrukcji.Implements Instrukcja musi zawierać każdego interfejsu, która jest określona w implementslist.Niemniej jednak nazwa, przez który definiuje interfejs Sub (w definedname) nie musi być zgodna z nazwą tej procedury (w name).
Wracając z procedurę typu Sub
Gdy Sub procedura zwraca do kodu wywołującego, kontynuuje wykonywanie przy użyciu instrukcji po instrukcji, która ją wywołała.
W poniższym przykładzie pokazano powrót z Sub procedury.
Sub mySub(ByVal q As String)
Return
End Sub
Exit Sub i Return instrukcje spowodować natychmiastowe wyjście z Sub procedury.Dowolną liczbę Exit Sub i Return instrukcji może występować w dowolnym miejscu procedury, i można mieszać Exit Sub i Return instrukcji.
Wywołanie procedury typu Sub
Należy wywołać Sub procedurę przy użyciu nazwy procedury w instrukcji i następnie po tę nazwę z listy jego argumentów w nawiasach.Nawiasy można pominąć, tylko wtedy, gdy nie poda żadnych argumentów.Jednakże kod jest bardziej czytelny, jeśli zawsze używać nawiasów.
A Sub procedury i Function procedury mogą mieć parametrów i wykonać serię instrukcji.Jednakże Function procedura zwraca wartość, a co Sub nie procedury.Dlatego nie można użyć Sub procedury w wyrażeniu.
Można użyć Call słowa kluczowego podczas wywoływania Sub procedura, ale to słowo kluczowe nie jest zalecane dla większości zastosowań.Aby uzyskać więcej informacji, zobacz Call — Instrukcja (Visual Basic).
Visual Basic Reorganizuje czasami wyrażenia arytmetycznego zwiększyć efektywność.Z tego powodu jeśli lista argument zawiera wyrażeń, które wywołują inne procedury, nie powinno Zakładam że te wyrażenia zostanie wywołana w określonej kolejności.
Procedury typu Sub asynchroniczne
Za pomocą funkcji komunikacji asynchronicznej, mogą wywoływać funkcje asynchronicznych, bez użycia jawnego wywołania zwrotne lub Ręczne dzielenie kodu wielu funkcji lub wyrażenia lambda.
Jeśli oznaczysz procedury z asynchroniczne modyfikator, można użyć oczekiwać operator w procedurze.Kiedy sterowania osiąga Await wyrażenie w Async procedurę, sterowanie powraca do wywołującego i postępu w ramach procedury jest zawieszone aż do zakończenia zadania oczekiwany.Po wykonaniu zadania w procedurze wznowić wykonywanie.
[!UWAGA]
Async Procedura zwraca się do rozmówcy po napotkaniu albo pierwszy Oczekiwany obiekt, który nie jest kompletny lub na końcu Async procedura zostanie osiągnięty, co nastąpi wcześniej.
Można również oznaczyć, Function — Instrukcja (Visual Basic) z Async modyfikatora.Async Funkcja może mieć typ zwracany z Task lub Task.Przykład później w tym temacie przedstawiono Async funkcja zwraca typ Task.
AsyncSubprocedury są stosowane głównie do obsługi zdarzeń, gdzie nie może być zwrócona wartość.AsyncSub Nie może być oczekiwany procedury i wywołujący AsyncSub procedura nie może przechwytywać wyjątków, Sub wyrzuca procedury.
Async Procedury nie można zadeklarować dowolną ByRef parametry.
Aby uzyskać więcej informacji o Async procedur, zobacz Programowanie asynchroniczne z Async i Await (C# i Visual Basic), Przepływ sterowania w aplikacjach asynchronicznych (C# i Visual Basic), i Asynchroniczne typy zwracane (C# i Visual Basic).
Przykład
W poniższym przykładzie użyto Sub instrukcji, aby zdefiniować nazwę, parametry i kod, który tworzy ciało Sub procedury.
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
W poniższym przykładzie DelayAsync jest AsyncFunction który ma zwracany typ Task. DelayAsyncma Return instrukcja, która zwraca liczbę całkowitą.W związku z tym, deklaracja funkcji z DelayAsync musi mieć typ zwracany z Task(Of Integer).Ponieważ typ zwracany jest Task(Of Integer), oceny Await wyrażenie w DoSomethingAsync daje całkowitą, jak w poniższym instrukcja: Dim result As Integer = Await delayTask.
startButton_Click Procedura jest przykładem Async Sub procedury.Bo DoSomethingAsync jest Async funkcji, zadania dla wywołania DoSomethingAsync musi oczekiwana, jak pokazano w następujących instrukcji: Await DoSomethingAsync().startButton_ClickSub Procedura musi być zdefiniowana z Async modyfikator ponieważ ma on Await wyrażenie.
' 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
Zobacz też
Zadania
Porady: używanie klasy ogólnej (Visual Basic)
Procedury rozwiązywania problemów (Visual Basic)
Informacje
Function — Instrukcja (Visual Basic)
Lista parametrów (Visual Basic)
Dim — Instrukcja (Visual Basic)
Call — Instrukcja (Visual Basic)