我使用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
答案 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中得到解决。