2011-04-07 7 views
6

Tengo un problema al utilizar el vb equivalente de la expresión MAX lambda. en foos.Max (función (x) x.id) cuando intento INTELLISENSE la propiedad ID VS no lo mostrará. Pero cuando ejecuto el ejemplo, funciona. ¿Hay algo que estoy haciendo que está mal, y tengo suerte de que funcione?vb función lambda MAX

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 

Respuesta

7

No ha especificado qué versión de Visual Studio que está utilizando, pero mi conjetura es que es VS 2008 ya que el IntelliSense funciona correctamente en VS 2010. Por otra parte, esto ha sido reported to Microsoft y declaró que sería se solucionará en la próxima versión de Visual Studio, que sería 2010 en el momento de ese informe.

Su código funciona bien y se compila porque es correcto, por lo que no está haciendo nada incorrecto. Si usted realmente desea conseguir IntelliSense en VS 2008 para una expresión lambda que tendría que especificar el tipo:

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

Al añadir el As Foo usted debe conseguir compatibilidad con IntelliSense. Para reiterar, el problema se ha resuelto en VS 2010.

Cuestiones relacionadas