Nasıl yapılır: Lambda İfadesi Oluşturma (Visual Basic)

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

  1. Temsilci türünün kullanılabilmesi için aşağıdaki örnekte olduğu gibi anahtar sözcüğünü Functionyazın:

    Dim add1 = Function

  2. Parantez içinde, hemen sonra Functionişlevin parametrelerini yazın. adından sonra Functionbir ad belirtmediğinize dikkat edin.

    Dim add1 = Function (num As Integer)

  3. 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 yan As tümcesi 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))
    
  4. 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 yordam oluşturmak için

  1. Temsilci türünün kullanabildiği herhangi bir durumda, aşağıdaki örnekte gösterildiği gibi anahtar sözcüğünü Subyazın.

    Dim add1 = Sub

  2. Parantez içinde, hemen sonra Sub, alt yordam parametrelerini yazın. adından sonra Subbir ad belirtmediğinize dikkat edin.

    Dim add1 = Sub (msg As String)

  3. Parametre listesini takip edin, alt yordam gövdesi olarak tek bir deyim yazın.

    Dim writeMessage = Sub(msg As String) Console.WriteLine(msg)
    

    Bir dize bağımsız değişkeni geçirerek lambda ifadesini çağırırsınız.

    ' The following line prints "Hello".
    writeMessage("Hello")
    

Çok satırlı lambda ifade işlevi oluşturmak için

  1. Temsilci türünün kullanabildiği herhangi bir durumda, aşağıdaki örnekte gösterildiği gibi anahtar sözcüğünü Functionyazın.

    Dim add1 = Function

  2. Parantez içinde, hemen sonra Functionişlevin parametrelerini yazın. adından sonra Functionbir ad belirtmediğinize dikkat edin.

    Dim add1 = Function (index As Integer)

  3. ENTER tuşuna basın. deyimi End Function otomatik olarak eklenir.

  4. 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 yan As tümcesi 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 satırı oluşturmak için

  1. Temsilci türünün kullanabildiği herhangi bir durumda, aşağıdaki örnekte gösterildiği gibi anahtar sözcüğünü Subyazın:

    Dim add1 = Sub

  2. Parantez içinde, hemen sonra Sub, alt yordam parametrelerini yazın. adından sonra Subbir ad belirtmediğinize dikkat edin.

    Dim add1 = Sub (msg As String)

  3. ENTER tuşuna basın. deyimi End Sub otomatik olarak eklenir.

  4. işlevi gövdesinde, alt yordam ç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
    

    Bir dize bağımsız değişkeni geçirerek lambda ifadesini çağırırsınız.

    writeToLog("Application started.")
    

Örnek

Lambda ifadelerinin yaygın bir kullanımı, türü olan bir parametrenin bağımsız değişkeni olarak geçirilebilen bir işlev tanımlamaktır Delegate. Aşağıdaki örnekte yöntemi, GetProcesses yerel bilgisayarda çalışan işlemlerin bir dizisini döndürür. Where sınıfından yöntemi, Enumerable bağımsız değişkeni olarak bir Boolean temsilci gerektirir. Örnekteki lambda ifadesi bu amaç için kullanılır. Yalnızca bir iş parçacığı olan ve içinde filteredListseçilen her işlem için döndürürTrue.

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, DilLe Tümleşik 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 bkz.