Aracılığıyla paylaş


Function Deyimi (Visual Basic)

Adı, parametreler ve tanımlayan kod bildirir bir Function yordam.

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

Bölümleri

Terim

Tanım

attributelist

İsteğe Bağlı.Bkz: öznitelik listesi.

accessmodifier

İsteğe Bağlı.Aşağıdakilerden biri olabilir:

Bkz: Visual Basic'de Erişim Düzeyleri

proceduremodifiers

İsteğe Bağlı.Aşağıdakilerden biri olabilir:

Shared

İsteğe Bağlı.Bkz: Paylaşılan.

Shadows

İsteğe Bağlı.Bkz: gölgeleri.

Async

İsteğe Bağlı.Bkz: zaman uyumsuz.

Iterator

İsteğe Bağlı.Bkz: Yineleyici.

name

Gerekli.Yordamın adı.Bkz: Bildirilen Öğe Adları (Visual Basic)

typeparamlist

İsteğe Bağlı.Genel yordam için tür parametreleri listesi.Bkz: türü listesinde.

parameterlist

İsteğe Bağlı.Bu yordamın parametreleri temsil eden yerel değişken adları listesi.Bkz: Parametre Listesi (Visual Basic)

returntype

Required if Option Strict is On.Bu yordam tarafından döndürülen değerin veri türü.

Implements

İsteğe Bağlı.Bu yordam, bir veya daha fazla uyguladığını gösterir Function yordamları, bu yordamın içeren sınıf veya yapı tarafından uygulanan bir arabirimde tanımlanan her biri.Bkz: Implements Deyimi

implementslist

Gerekli if Implements sağlanır.Liste, Function uygulanan yordamlar.

implementedprocedure [ , implementedprocedure ... ]

Her implementedprocedure aşağıdaki sözdizimi ve bölümleri vardır:

interface.definedname

Parça

Tanımlama

interface

Gerekli.Bu yordam tarafından uygulanan bir arabirimin adını içeren sınıf veya yapı.

definedname

Gerekli.Tarafından yordamı tanımlanmış ad interface.

Handles

İsteğe Bağlı.Bu yordamı, bir veya daha fazla belirli olayları işleyebilirsiniz gösterir.Bkz: Handles Tümcesi (Visual Basic)

eventlist

Gerekli if Handles sağlanır.Bu yordam işleme olayların listesi.

eventspecifier [ , eventspecifier ... ]

Her eventspecifier aşağıdaki sözdizimi ve bölümleri vardır:

eventvariable.event

Parça

Tanımlama

eventvariable

Gerekli.Nesne değişkeni sınıf veya olayını yapısı veri türüyle bildirilir.

event

Gerekli.Bu yordam işleme olay adı.

statements

İsteğe Bağlı.Bu yordamı içinde yürütülecek deyimleri bloğu.

EndFunction

Bu yordam tanımını sonlandırır.

Notlar

Tüm diğer yürütülebilir kodlar yordam içinde olmalıdır.Her yordamı, bir sınıf, bir yapı ya da içeren sınıf, yapı veya modül başvurulan bir modül içinde bildirilir.

Arama kodu için bir değer döndürmek için bir Function yordam; Aksi durumda, bir Sub yordam.

Bir işlev tanımlama

Tanımlayabileceğiniz bir Function yordam yalnızca modül düzeyinde.Bu nedenle, bir işlev bildirimini bağlamının bir sınıf, bir yapı, bir modül veya arabirim olmalıdır ve bir kaynak dosyası, bir ad alanı, bir yordam veya bir blok olamaz.Daha fazla bilgi için bkz. Bildirim Bağlamları ve Varsayılan Erişim Düzeyleri (Visual Basic).

FunctionGenel erişim için varsayılan yordamlar.Erişim değiştiricileri ile kullanıcıların erişim düzeylerini ayarlayabilirsiniz.

A Function yordamı yordamın döndürdüğü değerin veri tipini bildirebilirsiniz.Herhangi bir veri türü veya bir sabit, bir yapı, bir sınıf veya arabirim adını belirtebilirsiniz.Belirtmezseniz, returntype yordam parametresi, döner Object.

Bu yordamı kullanıyorsa, Implements anahtar sözcüğü, içeren sınıf veya yapı da olması gerekir bir Implements hemen sonra gelen deyimi kendi Class veya Structure ifadesi.Implements Deyimi içinde belirtilen her arabirimi içermelidir implementslist.Ancak, arabirim olarak tanımlayan ad Function (içinde definedname) Bu yordam adıyla eşleşmesi gerekmez (de name).

[!NOT]

Lambda ifadeleri, İşlev deyimleri satır içi tanımlamak için kullanabilirsiniz.Daha fazla bilgi için, bkz. İşlev İfadesi (Visual Basic) ve Lambda İfadeleri (Visual Basic).

Bir işlevinden dönme

Zaman Function yordam çağırma kodu döndürür, yürütme yordamı çağıran deyimi aşağıdaki deyimi ile devam eder.

Bir değer bir işlevinden dönmek için işlev adını değerini atayın veya içinde olmasını bir Return ifadesi.

Return İfadesi aynı anda dönüş değeri atar ve aşağıdaki örnekte gösterildiği gibi işlev çıkar.

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

Aşağıdaki örnek dönüş değeri işlev adını atar myFunction ve Exit Function dönmek deyimi.

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

Exit Function Ve Return ifadeleri neden hemen bir çıkış bir Function yordam.Herhangi bir sayıda Exit Function ve Return deyimleri yordamı içinde herhangi bir yerde görüntülenebilir ve karıştırmak Exit Function ve Return deyimleri.

Kullanırsanız, Exit Function bir değer atama olmadan name, belirtilen veri türü için varsayılan değer yordamın döndürdüğü returntype.returntype Yordamın döndürdüğü belirlenmezse Nothing, için varsayılan değer olan Object.

Bir işlev çağırarak

Siz bir Function yordamı kullanarak bir ifadede parantez içinde bağımsız değişken listesi tarafından izlenen yordam adı.Herhangi bir bağımsız değişkeni yalnızca sağlama bulunmayan ayraçları kullanmayabilirsiniz.Ancak, kodunuz her zaman ayraçlar dahil ederseniz daha okunabilir.

Siz bir Function gibi herhangi bir kitaplık çağırmak aynı şekilde işlev yordamı Sqrt, Cos, veya ChrW.

Kullanarak bir işlevi çağırabileceksiniz Call anahtar sözcük.Bu durumda, dönüş değeri yoksayılır.Kullanımı Call anahtar sözcüğünü çoğu durumda kullanmanız önerilmez.Daha fazla bilgi için bkz. Call Deyimi (Visual Basic).

Visual Basic iç verimliliğini artırmak için aritmetik ifadeler bazen yeniden düzenler.Bu nedenle, kullanmamanız bir Function yordam işlevi aynı ifadede değişken değeri değiştiğinde bir aritmetik ifade olarak.

Zaman uyumsuz işlevleri

Zaman uyumsuz özelliği olmadan açık çaðrýlarý kullanarak veya el ile birden çok işlevlerini veya lambda ifadeleri kodunuzu bölerek zaman uyumsuz işlevleri çağırmak sağlar.

İşlevi ile işaretler, zaman uyumsuz değiştiricisi, kullanabileceğiniz Await işlev işleci.Ne zaman, en fazla kontrol bir Await ifade Async işlevi, denetimi çağırana döndürür ve awaited görev tamamlanıncaya kadar askıya işlevi sürüyor.Görev tamamlandığında yürütme işlevini devam edebilirsiniz.

[!NOT]

Bir Async yordam ya da henüz tamamlanmadı ilk awaited nesne karşılaştığında çağırana döndürür ya da sonuna kadar alır Async yordam, hangisi oluşur ilk.

Bir Async işlev, dönüş türüne sahip Task veya Task.Örnek olarak bir Async dönüş türü olan işlev Task aşağıda verilmiştir.

Bir Async işlevi tüm bildiremez ByRef parametreleri.

A Sub Deyimi (Visual Basic) ile işaretlenebilir Async değiştirici.Burada bir değer döndürülemez bu olay işleyicileri için öncelikle kullanılır.Bir AsyncSub yordam beklediğin olamaz ve çağıranın bir AsyncSub yordam tarafından atılan özel durumları yakalamak Sub yordam.

Hakkında daha fazla bilgi için Async İşlevler, bkz: Async ve Await ile Zaman Uyumsuz Programlama (C# ve Visual Basic), Zaman Uyumsuz Programlarda Denetim Akışı (C# ve Visual Basic), ve Zaman Uyumsuz Dönüş Türleri (C# ve Visual Basic).

Yineleyici işlevleri

Bir Yineleyici işlevi listesi veya dizi gibi bir koleksiyon üzerinde özel bir yineleme yapar.Yineleyici işlevini kullanan Ödeme her öğe bir anda geri dönmek için deyim.Zaman bir ortaya ifadesi ulaşıldığında, kod geçerli konumda hatırlanır.Yürütme Yineleyici işlevi adı verilen bir sonraki açışınızda bu konumdan yeniden başlatılır.

Bir yineleyici kullanarak istemci kodundan çağırma bir For Each...Sonraki ifadesi.

Bir yineleyici işlevin dönüş türü olabilir IEnumerable, IEnumerable, IEnumerator, veya IEnumerator.

Daha fazla bilgi için bkz. Yineleyiciler (C# ve Visual Basic).

Örnek

Aşağıdaki örnek Function adı, parametreler ve gövdesini oluşturan kod bildirmek deyim bir Function yordam.ParamArray Değiştirici sayılarda bağımsız değişken kabul etmek işlev sağlar.

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

Aşağıdaki örnek önceki örnekte bildirilen işlevini çağırır.

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

Aşağıdaki örnekte, DelayAsync olan bir AsyncFunction dönüş türüne sahip Task. DelayAsyncolan bir Return bir tamsayı döndürür ifade.Bu nedenle işlev bildirimi DelayAsync dönüş türüne sahip olmalıdır Task(Of Integer).Dönüş türü olduğundan Task(Of Integer), değerlendirme, Await ifade DoSomethingAsync bir tamsayı oluşturur.Bu ifadede bu gösterilmektedir: Dim result As Integer = Await delayTask.

startButton_Click Yordamı örneği olan bir Async Sub yordam.Çünkü DoSomethingAsync olan bir Async işlev, görev çağrısı için DoSomethingAsync aşağıdaki ifadeyi gösterdiği gibi beklediğin gerekir: Await DoSomethingAsync().startButton_ClickSub Yordamı tanımlı, ile Async değiştirici olduğundan bir Await ifadesi.

' 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

Ayrıca bkz.

Görevler

Nasıl yapılır: Genel Bir Sınıf Kullanma (Visual Basic)

Yordam Sorunlarını Giderme (Visual Basic)

Başvuru

Sub Deyimi (Visual Basic)

Parametre Listesi (Visual Basic)

Dim Deyimi (Visual Basic)

Call Deyimi (Visual Basic)

Of Tümcesi (Visual Basic)

İşlev İfadesi (Visual Basic)

Kavramlar

İşlev Yordamları (Visual Basic)

Parametre Dizileri (Visual Basic)

Lambda İfadeleri (Visual Basic)