2011-03-09 3 views
3

VB.Net에서 람다를 사용하면 인텔리 센스가 발생하지 않습니다. 이 VS2010 또는 예상 버그? 그것은 C#을VB.Net 인텔리 센스가없는 람다 식

Return Array.TrueForAll(chequeColl, Function(x) x.Number <> "N") 'No intellisense Number does not appear 


Return Array.TrueForAll(chequeColl, Function(x As MyClass) x.Number <> "N") 'Now casted intellisense appears 

UPDATE에서 잘 작동합니다 : 여기

Public Class Cheque 

    Public Property Id As String 
    Public Property Status As Byte 
    Public Property Amount As String 
    Public Property Number As String 

End Class 


Public Class ChequeCollection 

    Private chequeColl() As Cheque 

    Public Sub DoStuff() 
     Array.TrueForAll(chequeColl, Function(x As Cheque) x.Number = 1) 'x has to be cast as cheque for intellisense to appear 
    End Sub 

End Class 
+2

일반적으로 VB.Net에서 람다를 사용하여 인텔리 센스를 얻습니다. 'chequeColl'의 선언을 게시 할 수 있습니까? – MarkJ

+0

클래스 객체의 간단한 배열 – Jon

+0

@ 존 어떤 종류의'객체 '입니까? MyClass가 아닌 경우 인텔리 센스를 얻지 못하는 것입니다. – msarchet

답변

1

객체의 배열이 강하게 클래스가 될 것이다 (T의) 목록처럼 입력되지 않은 예입니다. 따라서 'x'를 입력하면 Intellisese에 'Number'가 나타나기를 기대합니다. 그렇지 않습니다. 런타임에는 해당 배열 내의 객체 유형을 알 수 없습니다.

이렇게 선택하면 LINQ를 사용하여 해당 배열을 styely tped 개체 모음으로 변환 할 수 있습니다. 다음에에 Intellisense가 표시됩니다. follwing을 라인이 제대로 작동해야합니다

희미한 ChequeList = (C MyArrayOfObjects에서 선택 C에서) .ToList() 또한

한 가지를 C#을 인텔리를 대 VB.NET을 확인 할 수 있습니다. 'Option Infer'를 'On'으로 설정해야합니다. 그것은 는 (-> 08-05에서 업그레이드 즉,> 10) 업그레이드 프로젝트에 기본적으로 것이 아니라

왜 내 람다 기능이 System.MissingMemberException 예외로 런타임에 오류를 던지고있다

?
http://allen-conway-dotnet.blogspot.com/2010/09/why-are-my-lambda-functions-throwing.html