Lambda 表达式不能转换为“<typename>”,因为“<typename>”不是委托类型

更新:2007 年 11 月

lambda 表达式可在委托有效的场合使用。可以将 lambda 表达式转换为兼容的委托类型,但不能将其转换为任何其他类型。例如,可以定义一个委托类型并将 lambda 表达式赋给它,或者发送一个 lambda 表达式作为 Func<TResult> 形参的实参。下面的代码演示这些示例。

Module Module1

    Delegate Function FunDel(ByVal m As Integer) As Boolean

    Sub Main()

        ' Assign a lambda expression to a function delegate.
        Dim negative As FunDel = Function(n As Integer) n < 0
        Console.WriteLine(negative(-3))

        ' Send a lambda as the argument to a delegate parameter.
        Dim numbers() As Integer = {3, 4, 2, 8, 1, 0, 9, 13, 42}
        Dim evens = numbers.Where(Function(n) n Mod 2 = 0)

        For Each even In evens
            Console.WriteLine(even)
        Next

    End Sub

End Module

**错误 ID:**BC36625

请参见

概念

lambda 表达式