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.
Lambda ifadesi, adı olmayan bir işlev veya alt yordamdır. Lambda ifadesi, temsilci türünün geçerli olduğu her yerde kullanılabilir.
Tek satırlı lambda ifade işlevi oluşturmak için
Bir temsilci türünün kullanılabileceği herhangi bir durumda, aşağıdaki örnekte olduğu gibi anahtar sözcüğü
Function
yazın.Dim add1 =
Function
Parantez içinde, hemen sonra
Function
işlevin parametrelerini yazın. adından sonraFunction
bir ad belirtmediğinize dikkat edin.Dim add1 = Function
(num As Integer)
Parametre listesini takip edin, işlevin gövdesi olarak tek bir ifade yazın. İfadenin değerlendirdiği değer, işlevi tarafından döndürülen değerdir. Dönüş türünü belirtmek için bir
As
ifadesi kullanmazsınız.Dim add1 = Function(num As Integer) num + 1
Bir tamsayı bağımsız değişkeni geçirerek lambda ifadesini çağırırsınız.
' The following line prints 6. Console.WriteLine(add1(5))
Alternatif olarak, aynı sonuç aşağıdaki örnek tarafından gerçekleştirilir:
Console.WriteLine((Function(num As Integer) num + 1)(5))
Tek satırlı lambda ifadesi alt programı yazmak için
Temsilci türünün kullanılabileceği herhangi bir durumda, aşağıdaki örnekte gösterildiği gibi anahtar kelimeyi `
Sub
` olarak yazın.Dim add1 =
Sub
Parantez içinde,
Sub
ifadesinin hemen ardından, alt yordamın parametrelerini yazın. adından sonraSub
bir ad belirtmediğinize dikkat edin.Dim add1 = Sub
(msg As String)
Parametre listesini takip edin, alt yordamın gövdesi olarak tek bir ifade yazın.
Dim writeMessage = Sub(msg As String) Console.WriteLine(msg)
Lambda ifadesini, bir dize bağımsız değişkeni geçirerek çağırırsınız.
' The following line prints "Hello". writeMessage("Hello")
Çok satırlı lambda ifade işlevi oluşturmak için
Temsilci türünün kullanılabileceği herhangi bir durumda, aşağıdaki örnekte gösterildiği gibi anahtar kelimeyi `
Function
` olarak yazın.Dim add1 =
Function
Parantez içinde, hemen sonra
Function
işlevin parametrelerini yazın. adından sonraFunction
bir ad belirtmediğinize dikkat edin.Dim add1 = Function
(index As Integer)
ENTER tuşuna basın. deyimi
End Function
otomatik olarak eklenir.işlevinin gövdesinde bir ifade oluşturmak ve değeri döndürmek için aşağıdaki kodu ekleyin. Dönüş türünü belirtmek için bir
As
ifadesi kullanmazsınız.Dim getSortColumn = Function(index As Integer) Select Case index Case 0 Return "FirstName" Case 1 Return "LastName" Case 2 Return "CompanyName" Case Else Return "LastName" End Select End Function
Bir tamsayı bağımsız değişkeni geçirerek lambda ifadesini çağırırsınız.
Dim sortColumn = getSortColumn(0)
Çok satırlı lambda ifadesi alt yordamı oluşturmak için
Herhangi bir durumda delege türü kullanılabiliyorsa, aşağıdaki örnekte gösterildiği gibi
Sub
anahtar sözcüğünü yazın.Dim add1 =
Sub
Parantez içinde,
Sub
ifadesinin hemen ardından, alt yordamın parametrelerini yazın. adından sonraSub
bir ad belirtmediğinize dikkat edin.Dim add1 = Sub
(msg As String)
ENTER tuşuna basın. deyimi
End Sub
otomatik olarak eklenir.İşlevin gövdesine, alt program çağrıldığında yürütülecek aşağıdaki kodu ekleyin.
Dim writeToLog = Sub(msg As String) Dim log As New EventLog() log.Source = "Application" log.WriteEntry(msg) log.Close() End Sub
Lambda ifadesini, bir dize bağımsız değişkeni geçirerek çağırırsınız.
writeToLog("Application started.")
Örnek
Lambda ifadelerinin yaygın bir kullanımı, türü Delegate
olan bir parametrenin bağımsız değişkeni olarak geçirilebilecek bir işlev tanımlamaktır. Aşağıdaki örnekte yöntemi, GetProcesses yerel bilgisayarda çalışan işlemlerin bir dizisini döndürür.
Where sınıfındaki Enumerable yöntemi, bağımsız değişken olarak bir Boolean
temsilci gerektirir. Örnekteki lambda ifadesi bu amaç için kullanılır. Yalnızca bir iş parçacığı olan her işlem için döndürür True
ve bunlar filteredList
içinde seçilir.
Sub Main()
' Create an array of running processes.
Dim procList As Process() = Diagnostics.Process.GetProcesses
' Return the processes that have one thread. Notice that the type
' of the parameter does not have to be explicitly stated.
Dim filteredList = procList.Where(Function(p) p.Threads.Count = 1)
' Display the name of each selected process.
For Each proc In filteredList
MsgBox(proc.ProcessName)
Next
End Sub
Önceki örnek, Language-Integrated Sorgu (LINQ) söz diziminde yazılan aşağıdaki koda eşdeğerdir:
Sub Main()
Dim filteredQuery = From proc In Diagnostics.Process.GetProcesses
Where proc.Threads.Count = 1
Select proc
For Each proc In filteredQuery
MsgBox(proc.ProcessName)
Next
End Sub
Ayrıca bakınız
- Enumerable
- Lambda İfadeleri
- Fonksiyon deyimi
- Alt Bildirim
- Temsilcileri
- Nasıl yapılır: Visual Basic'te Yordamları Başka Bir Yordama Geçirme
- Temsilci Deyimi
- Visual Basic'da LINQ'e
Giriş