Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir yordamı tanımlayan adı, parametreleri ve kodu bildirir Sub .
Sözdizimi
[ <attributelist> ] [ Partial ] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ] [ Async ]
Sub name [ (Of typeparamlist) ] [ (parameterlist) ] [ Implements implementslist | Handles eventlist ]
[ statements ]
[ Exit Sub ]
[ statements ]
End Sub
Parça
attributelististeğe bağlı. Bkz. Öznitelik Listesi.
Partialisteğe bağlı. Kısmi bir yöntemin tanımını gösterir. Bkz. Kısmi Yöntemler.
accessmodifieristeğe bağlı. Aşağıdakilerden biri olabilir:
Bkz. Visual Basic'te erişim düzeyleri.
proceduremodifiersisteğe bağlı. Aşağıdakilerden biri olabilir:
MustOverride OverridesNotOverridable Overrides
Sharedisteğe bağlı. Bkz. Paylaşılan.
Shadowsisteğe bağlı. Bkz. Gölgeler.
Asyncisteğe bağlı. Bkz. Zaman Uyumsuz.
nameGerekli. Yordamın adı. Bkz. Bildirilen Öğe Adları. Bir sınıf için oluşturucu yordamı oluşturmak için, bir
Subyordamın adını anahtar sözcük olarakNewayarlayın. Daha fazla bilgi için bkz . Nesne Ömrü: Nesneler Nasıl Oluşturulur ve Yok Edilir.typeparamlististeğe bağlı. Genel yordam için tür parametrelerinin listesi. Bkz. Tür Listesi.
parameterlististeğe bağlı. Bu yordamın parametrelerini temsil eden yerel değişken adlarının listesi. Bkz. Parametre Listesi.
Implementsisteğe bağlı. Bu yordamın, her biri bu yordamın içeren sınıfı veya yapısı tarafından uygulanan bir arabirimde tanımlanan bir veya daha fazla
Subyordam uyguladığını gösterir. Bkz . Implements Deyimi.implementslistSağlanırsa
Implementsgereklidir.SubUygulanan yordamların listesi.implementedprocedure [ , implementedprocedure ... ]Her
implementedprocedurebirinin söz dizimi ve bölümleri vardır:interface.definednameBölüm Açıklama interfaceGerekli. Bu yordamın içeren sınıfı veya yapısı tarafından uygulanan arabirimin adı. definednameGerekli. Yordamın içinde interfacetanımlandığı ad.Handlesisteğe bağlı. Bu yordamın belirli bir veya daha fazla olayı işleyebileceğini gösterir. Bkz. Tanıtıcılar.
eventlistSağlanırsa
Handlesgereklidir. Bu yordamın işlediği olayların listesi.eventspecifier [ , eventspecifier ... ]Her
eventspecifierbirinin söz dizimi ve bölümleri vardır:eventvariable.eventBölüm Açıklama eventvariableGerekli. Nesne değişkeni, olayı oluşturan sınıfın veya yapının veri türüyle bildirildi. eventGerekli. Bu yordamın işlediği olayın adı. statementsisteğe bağlı. Bu yordam içinde çalıştırılacak deyim bloğu.
End SubBu yordamın tanımını sonlandırır.
Açıklamalar
Tüm yürütülebilir kod bir yordam içinde olmalıdır.
Sub Çağıran koda bir değer döndürmek istemediğinizde bir yordam kullanın. Bir değer döndürmek istediğinizde bir Function yordam kullanın.
Alt Yordam Tanımlama
Bir Sub yordamı yalnızca modül düzeyinde tanımlayabilirsiniz. Bu nedenle bir alt yordamın bildirim bağlamı bir sınıf, yapı, modül veya arabirim olmalıdır ve kaynak dosya, ad alanı, yordam veya blok olamaz. Daha fazla bilgi için bkz . Bildirim Bağlamları ve Varsayılan Erişim Düzeyleri.
Sub yordamları varsayılan olarak genel erişim olarak kullanır. Erişim değiştiricilerini kullanarak erişim düzeylerini ayarlayabilirsiniz.
Yordam anahtar sözcüğünü Implements kullanıyorsa, içeren sınıf veya yapı hemen veya Implements deyimini Class izleyen bir Structure deyimine sahip olmalıdır. deyiminde Implementsimplementslistbelirtilen her arabirimi içermelidir. Ancak, arabirimin tanımladığı adın Sub (içinde definedname) bu yordamın adıyla (içinde name) eşleşmesi gerekmez.
Alt Yordamdan Dönme
Bir Sub yordam çağıran koda geri döndüğünde yürütme, onu çağıran deyiminden sonra deyimiyle devam eder.
Aşağıdaki örnekte bir yordamdan Sub bir dönüş gösterilmektedir.
Sub mySub(ByVal q As String)
Return
End Sub
Exit Sub ve Return deyimleri bir yordamdan Sub hemen çıkışa neden olur. Yordamın herhangi bir yerinde herhangi bir Exit Sub sayıda ve Return deyimi görüntülenebilir ve ve Exit Sub deyimlerini karıştırabilirsinizReturn.
Alt Yordam Çağırma
Bir Sub deyiminde yordam adını kullanarak ve sonra parantez içinde bağımsız değişken listesiyle bu adı izleyerek bir yordamı çağırırsınız. Parantezleri atlayabilirsiniz, ancak herhangi bir bağımsız değişken sağlamazsanız. Ancak, parantezleri her zaman eklerseniz kodunuz daha okunabilir olur.
Yordam Sub ve Function yordam parametrelerine sahip olabilir ve bir dizi deyim gerçekleştirebilir. Ancak, bir Function yordam bir değer döndürür ve yordam Sub döndürmez. Bu nedenle, bir ifadede yordam Sub kullanamazsınız.
Bir Call yordamı çağırırken anahtar sözcüğünü Sub kullanabilirsiniz, ancak çoğu kullanım için bu anahtar sözcük önerilmez. Daha fazla bilgi için bkz . Arama Deyimi.
Visual Basic bazen iç verimliliği artırmak için aritmetik ifadeleri yeniden düzenler. Bu nedenle, bağımsız değişken listenize diğer yordamları çağıran ifadeler varsa, bu ifadelerin belirli bir sırada çağrılacağını varsaymamalısınız.
Zaman Uyumsuz Alt Yordamlar
Zaman Uyumsuz özelliğini kullanarak, açık geri çağırmalar kullanmadan veya kodunuzu birden çok işleve veya lambda ifadesine el ile bölmeden zaman uyumsuz işlevleri çağırabilirsiniz.
Bir yordamı Zaman Uyumsuz değiştirici ile işaretlerseniz, yordamda Await işlecini kullanabilirsiniz. Denetim yordamdaki Await bir Async ifadeye ulaştığında, denetim çağırana geri döner ve yordamdaki ilerleme, beklenen görev tamamlanana kadar askıya alınır. Görev tamamlandığında, yürütme yordamda devam edebilir.
Not
Yordam Async , henüz tamamlanmamış ilk beklenen nesneyle karşılaşıldığında veya yordamın Async sonuna ulaşıldığında (hangisi önce gerçekleşirse) çağırana geri döner.
İşlev DeyiminiAsync. İşlevin Async dönüş türü Task<TResult> veya Taskolabilir. Bu konunun devamında yer alan bir Async örnek, dönüş türü Task<TResult>olan bir işlevi gösterir.
Async
Sub yordamlar öncelikli olarak bir değerin döndürülemez olduğu olay işleyicileri için kullanılır. Bir AsyncSub yordam beklenemez ve bir AsyncSub yordamın çağıranı, yordamın Sub attığı özel durumları yakalayamaz.
Bir Async yordam herhangi bir ByRef parametresi bildiremez.
Yordamlar hakkında Async daha fazla bilgi için bkz . Async ve Await ile Zaman Uyumsuz Programlama, Zaman Uyumsuz Programlarda Denetim Akışı ve Zaman Uyumsuz Dönüş Türleri.
Örnek 1
Aşağıdaki örnek, bir Sub yordamın gövdesini Sub oluşturan adı, parametreleri ve kodu tanımlamak için deyimini kullanır.
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
Örnek 2
Aşağıdaki örnekte, DelayAsync dönüş türü olan bir AsyncFunction değeridir Task<TResult>.
DelayAsync tamsayı döndüren bir Return deyime sahiptir. Bu nedenle, işlev bildiriminin DelayAsync dönüş türü Task(Of Integer)olmalıdır. Dönüş türü olduğundan Task(Of Integer), içindeki ifadenin AwaitDoSomethingAsync değerlendirilmesi, aşağıdaki deyimde gösterildiği gibi bir tamsayı oluşturur: Dim result As Integer = Await delayTask.
Yordam startButton_Click , bir Async Sub yordam örneğidir. Bir DoSomethingAsyncAsync işlev olduğundan, aşağıdaki deyimde gösterildiği gibi çağrısının DoSomethingAsync görevi beklenmelidir: Await DoSomethingAsync(). bir startButton_ClickSub ifadeye sahip Async olduğundan yordamın Await değiştirici ile tanımlanması gerekir.
' 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