функция лямбда-макс vb - PullRequest
       2

функция лямбда-макс vb

6 голосов
/ 07 апреля 2011

У меня проблема с использованием vb-эквивалента MAX-лямбда-выражения.в 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 Ответ

7 голосов
/ 07 апреля 2011

Вы не указали, какую версию Visual Studio вы используете, но я предполагаю, что это VS 2008, поскольку IntelliSense правильно работает в VS 2010. Кроме того, об этом сообщили в Microsoft , и они заявил, что это будет исправлено в следующей версии Visual Studio, которая будет выпущена в 2010 году во время этого отчета.

Ваш код работает нормально и компилируется, потому что он правильный, поэтому вы не делаете ничего плохого. Если вы действительно хотите получить IntelliSense в VS 2008 для лямбда-выражения, вам необходимо указать тип:

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

При добавлении As Foo вы должны получить поддержку IntelliSense. Повторюсь, проблема была решена в VS 2010.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...