vb lambda MAX函数

时间:2011-04-07 13:11:01

标签: vb.net lambda

我使用MAX lambda表达式的vb等效问题。在 foos.Max(function(x)x.id) 当我尝试智能感知属性 ID VS时不会表现出来。但是,当我运行这个例子时,它可行。我在做什么是错的,我很幸运它运行?

 Sub Main()
        Dim foos As New List(Of Foo)
        Dim bob As New Foo() With {.id = 5, .name = "bob"}
        foos.Add(bob)
        foos.Max(Function(x) x.id)
    End Sub

    Public Class Foo
        Public Property id() As Integer
            Get
                Return m_id
            End Get
            Set(ByVal value As Integer)
                m_id = Value
            End Set
        End Property
        Private m_id As Integer
        Public Property name() As String
            Get
                Return m_name
            End Get
            Set(ByVal value As String)
                m_name = Value
            End Set
        End Property
        Private m_name As String
    End Class

1 个答案:

答案 0 :(得分:7)

你没有指定你正在使用哪个版本的Visual Studio,但我的猜测是它是VS 2008,因为IntelliSense在VS 2010中正常工作。此外,这是reported to Microsoft并且他们声明它会将在Visual Studio的下一个版本中修复,该版本将在2010年报告时生成。

您的代码运行正常并且编译因为它是正确的,所以您没有做错任何事情。如果你真的想在VS 2008中获得一个lambda表达式的IntelliSense,你需要指定类型:

foos.Max(Function(x As Foo) x.id)

通过添加As Foo,您应该获得IntelliSense支持。重申一下,这个问题已在VS 2010中得到解决。