vb lambda MAX函数

gh9*_*gh9 6 vb.net lambda

我使用MAX lambda表达式的vb等效问题.在foos.Max(function(x)x.id) 当我尝试intellisense时,属性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
Run Code Online (Sandbox Code Playgroud)

Ahm*_*eed 7

你没有指定你正在使用哪个版本的Visual Studio,但我的猜测是它是VS 2008,因为IntelliSense在VS 2010中正常工作.此外,这已经报告给微软,他们表示将在下一个版本中修复它. Visual Studio的版本,在该报告发布时为2010年.

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

foos.Max(Function(x As Foo) x.id)
Run Code Online (Sandbox Code Playgroud)

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