#vb.net #lambda
#vb.net #лямбда
Вопрос:
У меня возникла проблема с использованием эквивалента vb лямбда-выражения MAX. в foos.Максимальная(функция(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
Ответ №1:
Вы не указали, какую версию Visual Studio вы используете, но я предполагаю, что это VS 2008, поскольку IntelliSense корректно работает в VS 2010. Кроме того, об этом было сообщено Корпорации Майкрософт, и они заявили, что это будет исправлено в следующей версии Visual Studio, которая на момент написания этого отчета будет 2010.
Ваш код работает нормально и компилируется, потому что он правильный, так что вы не делаете ничего неправильного. Если вы действительно хотите получить IntelliSense в VS 2008 для лямбда-выражения, вам нужно будет указать тип:
foos.Max(Function(x As Foo) x.id)
Добавив As Foo
, вы должны получить поддержку IntelliSense. Повторяю, проблема была решена в версии 2010.