Function Deyimi (Visual Basic)
Bir yordamı tanımlayan adı, parametreleri ve kodu bildirir Function
.
Sözdizimi
[ <attributelist> ] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ] [ Async | Iterator ]
Function name [ (Of typeparamlist) ] [ (parameterlist) ] [ As returntype ] [ Implements implementslist | Handles eventlist ]
[ statements ]
[ Exit Function ]
[ statements ]
End Function
Parça
attributelist
isteğe bağlı. Bkz. Öznitelik Listesi.
accessmodifier
isteğe bağlı. Aşağıdakilerden biri olabilir:
Bkz. Visual Basic'te erişim düzeyleri.
proceduremodifiers
isteğe bağlı. Aşağıdakilerden biri olabilir:
MustOverride Overrides
NotOverridable Overrides
Shared
isteğe bağlı. Bkz. Paylaşılan.
Shadows
isteğe bağlı. Bkz. Gölgeler.
Async
isteğe bağlı. Bkz. Zaman Uyumsuz.
Iterator
isteğe bağlı. Bkz. Yineleyici.
name
Gerekli. Yordamın adı. Bkz. Bildirilen Öğe Adları.
typeparamlist
isteğe bağlı. Genel yordam için tür parametrelerinin listesi. Bkz. Tür Listesi.
parameterlist
isteğe bağlı. Bu yordamın parametrelerini temsil eden yerel değişken adlarının listesi. Bkz. Parametre Listesi.
returntype
ise
Option Strict
gereklidirOn
. Bu yordam tarafından döndürülen değerin veri türü.Implements
isteğ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
Function
yordam uyguladığını gösterir. Bkz . Implements Deyimi.implementslist
Sağlanırsa
Implements
gereklidir.Function
Uygulanan yordamların listesi.implementedprocedure [ , implementedprocedure ... ]
Her
implementedprocedure
birinin söz dizimi ve bölümleri vardır:interface.definedname
Bölüm Açıklama interface
Gerekli. Bu yordamın içeren sınıfı veya yapısı tarafından uygulanan arabirimin adı. definedname
Gerekli. Yordamın içinde interface
tanımlandığı ad.Handles
isteğe bağlı. Bu yordamın belirli bir veya daha fazla olayı işleyebileceğini gösterir. Bkz. Tanıtıcılar.
eventlist
Sağlanırsa
Handles
gereklidir. Bu yordamın işlediği olayların listesi.eventspecifier [ , eventspecifier ... ]
Her
eventspecifier
birinin söz dizimi ve bölümleri vardır:eventvariable.event
Bölüm Açıklama eventvariable
Gerekli. Nesne değişkeni, olayı oluşturan sınıfın veya yapının veri türüyle bildirildi. event
Gerekli. Bu yordamın işlediği olayın adı. statements
isteğe bağlı. Bu yordam içinde yürütülecek deyim bloğu.
End Function
Bu yordamın tanımını sonlandırır.
Açıklamalar
Tüm yürütülebilir kod bir yordam içinde olmalıdır. Sırayla her yordam bir sınıf, bir yapı veya içeren sınıf, yapı veya modül olarak adlandırılan bir modül içinde bildirilir.
Çağıran koda bir değer döndürmek için bir Function
yordam kullanın; aksi takdirde bir Sub
yordam kullanın.
İşlev Tanımlama
Bir Function
yordamı yalnızca modül düzeyinde tanımlayabilirsiniz. Bu nedenle, bir işlevin 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.
Function
yordamları varsayılan olarak genel erişim olarak kullanır. Erişim değiştiricileri ile erişim düzeylerini ayarlayabilirsiniz.
Yordam Function
, yordamın döndürdüğü değerin veri türünü bildirebilir. Herhangi bir veri türünü veya numaralandırmanın adını, yapısını, sınıfını veya arabirimini belirtebilirsiniz. Parametresini returntype
belirtmezseniz, yordam döndürür Object
.
Bu yordam anahtar sözcüğünü Implements
kullanıyorsa, içeren sınıfın veya yapının da veya Structure
deyimini Class
hemen izleyen bir Implements
deyimi olmalıdır. deyiminde Implements
implementslist
belirtilen her arabirimi içermelidir. Ancak, arabirimin (içindedefinedname
) tanımladığı Function
adın bu yordamın adıyla (içindename
) eşleşmesi gerekmez.
Not
Satır içi işlev ifadelerini tanımlamak için lambda ifadelerini kullanabilirsiniz. Daha fazla bilgi için bkz . İşlev İfadesi ve Lambda İfadeleri.
İşlevden dönme
Function
Yordam çağıran koda geri döndüğünde yürütme, yordamı çağıran deyimi izleyen deyimiyle devam eder.
bir işlevden değer döndürmek için, değeri işlev adına atayabilir veya bir Return
deyime ekleyebilirsiniz.
Deyimi Return
aynı anda dönüş değerini atar ve aşağıdaki örnekte gösterildiği gibi işlevden çıkar.
Function MyFunction(ByVal j As Integer) As Double
Return 3.87 * j
End Function
Aşağıdaki örnek, dönüş değerini işlev adına myFunction
atar ve sonra döndürmek için deyimini Exit Function
kullanır.
Function MyFunction(ByVal j As Integer) As Double
MyFunction = 3.87 * j
Exit Function
End Function
Exit Function
ve Return
deyimleri bir yordamdan Function
hemen çıkışa neden olur. Yordamın herhangi bir yerinde herhangi bir Exit Function
sayıda ve Return
deyimi görüntülenebilir ve ve Return
deyimlerini karıştırabilirsinizExit Function
.
için bir değer name
atamadan kullanırsanızExit Function
, yordam içinde returntype
belirtilen veri türü için varsayılan değeri döndürür. belirtilmezsereturntype
, yordam için Object
varsayılan değer olan değerini döndürürNothing
.
İşlev Çağırma
Yordam adını ve ardından parantez içindeki bağımsız değişken listesini bir ifadede kullanarak bir yordamı çağırırsınız Function
. Parantezleri atlayabilirsiniz, ancak herhangi bir bağımsız değişken sağlamazsanız. Ancak, parantezleri her zaman eklerseniz kodunuz daha okunabilir olur.
Bir yordamı, , Cos
veya ChrW
gibi herhangi bir Function
kitaplık işlevini çağırdığınız gibi Sqrt
çağırırsınız.
Ayrıca anahtar sözcüğünü Call
kullanarak bir işlevi çağırabilirsiniz. Bu durumda, dönüş değeri yoksayılır. Anahtar sözcüğün Call
kullanılması çoğu durumda ö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, işlev aynı ifadedeki değişkenlerin değerini değiştirdiğinde aritmetik ifadede bir yordam kullanmamalısınız Function
.
Zaman Uyumsuz İşlevler
Zaman Uyumsuz özelliği, açık geri çağırmalar kullanmadan veya kodunuzu birden çok işlev veya lambda ifadesi arasında el ile bölmeden zaman uyumsuz işlevleri çağırmanıza olanak tanır.
Bir işlevi Zaman Uyumsuz değiştirici ile işaretlerseniz işlevde Await işlecini kullanabilirsiniz. Denetim işlevdeki Async
bir Await
ifadeye ulaştığında, denetim çağırana geri döner ve beklenen görev tamamlanana kadar işlevdeki ilerleme askıya alınır. Görev tamamlandığında, yürütme işlevinde devam edebilir.
Not
Yordam Async
, henüz tamamlanmamış ilk beklenen nesneyle karşılaştığında veya yordamın Async
sonuna geldiğinde (hangisi önce gerçekleşirse) çağırana geri döner.
İşlevin Async
dönüş türü Task<TResult> veya Taskolabilir. Dönüş türüne Task<TResult> sahip bir işlev örneği Async
aşağıda verilmiştir.
İşlev Async
herhangi bir ByRef parametresi bildiremez.
Bir Alt Deyim de değiştirici ile Async
işaretlenebilir. Bu öncelikle bir değerin döndürülemediği olay işleyicileri için kullanılır. Bir Async
Sub
yordam beklenemez ve bir Async
Sub
yordamın çağıranı yordam tarafından Sub
oluşan özel durumları yakalayamaz.
İşlevler 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.
Yineleyici İşlevleri
Yineleyici işlevi, liste veya dizi gibi bir koleksiyon üzerinde özel bir yineleme gerçekleştirir. Yineleyici işlevi, her öğeyi birer birer döndürmek için Yield deyimini kullanır. Bir Yield deyimine ulaşıldığında koddaki geçerli konum hatırlanır. Yineleyici işlevi bir sonraki çağrılışında yürütme bu konumdan yeniden başlatılır.
Her İçin... kullanarak istemci kodundan bir yineleyici çağırırsınız. Sonraki deyim.
Yineleyici işlevinin dönüş türü , , IEnumerable<T>IEnumeratorveya IEnumerator<T>olabilirIEnumerable.
Daha fazla bilgi için bkz . Yineleyiciler.
Örnek 1
Aşağıdaki örnek, bir Function
yordamın gövdesini Function
oluşturan adı, parametreleri ve kodu bildirmek için deyimini kullanır. Değiştirici işlevin ParamArray
değişken sayıda bağımsız değişkeni kabul etmesine olanak tanır.
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
Örnek 2
Aşağıdaki örnek, önceki örnekte bildirilen işlevi ç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
Örnek 3
Aşağıdaki örnekte, DelayAsync
dönüş türü olan bir Async
Function
değeridir Task<TResult>. DelayAsync
tamsayı döndüren bir Return
deyime sahiptir. Bu nedenle işlevinin bildiriminin DelayAsync
dönüş türüne Task(Of Integer)
sahip olması gerekir. dönüş türü olduğundan Task(Of Integer)
içindeki ifadenin Await
DoSomethingAsync
değerlendirilmesi bir tamsayı oluşturur. Bu, şu deyimde gösterilmiştir: Dim result As Integer = Await delayTask
.
Yordam startButton_Click
, bir Async Sub
yordam örneğidir. Bir DoSomethingAsync
Async
işlev olduğundan, aşağıdaki deyimin gösterdiği gibi çağrısının DoSomethingAsync
görevi beklenmelidir: Await DoSomethingAsync()
. bir startButton_Click
Sub
ifadeye sahip Await
olduğundan yordamın Async
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
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin