Aracılığıyla paylaş


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. Bir temsilci türünün kullanılabileceği herhangi bir durumda, aşağıdaki örnekte olduğu gibi anahtar sözcüğü 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 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))
    
  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 programı yazmak için

  1. 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

  2. Parantez içinde, Sub ifadesinin hemen ardından, alt yordamın 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ı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

  1. 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

  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 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

  1. 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

  2. Parantez içinde, Sub ifadesinin hemen ardından, alt yordamın 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. İş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