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
Seznam parametrů (Visual Basic)
Koncepty
Procedury typu Function (Visual Basic)