2011-08-08 4 views
3

나는 다음과 같은 코드가사용 목록이 예상대로 작동하지 않는 값을 업데이트하는

PB.ForEach(Function(x) x.Cost = GetPartCost(x.PartNumber, x.Units, x.Cost, FB)) 

Return PB.Sum(Function(x) (x.Cost * x.Qty)) 

그러나 항상 내가 체크 해봤 0 반환하고 GetPartCost 함수가 실행하고를 반환해야 0이 아닌 수는 있지만 목록 항목 비용 등록 정보는 절대로 갱신되지 않습니다. 나는 재산의 Set에 중단 점을 설정하면

이 건물은 단순한 호텔입니다,

Public Property Cost() As Double 
    Get 
     Return _Cost 
    End Get 
    Set(ByVal value As Double) 
     _Cost = value 
    End Set 
End Property 

, 그것은 공격하지 없구요.

이 경우 어떻게됩니까?

답변

11

여기서의 문제는 할당과의 혼란스러운 비교입니다.

Function(x) x.Cost = GetPartCost ... 

이것은 x.CostGetPartCost 사이의 비교가 아닌 할당 아래로 컴파일합니다. 그 이유는 Function (x)이 표현식 람다이므로 표현식 =의 컨텍스트에서 사용되는 경우 비교가 지정되지 않습니다.

참고

Sub(x) x.Cost = GetPartCost ... 

할당 의미

을 생산하는 /이 사용을 Sub을 성명을 수정하려면 다음 Sub 람다는 Visual Studio 2010에서 Visual Studio 2010을

+0

아까지 사용할 수 없습니다, 나는'Function'가 'didn를 것을 발견했다 문맥에 어떤 의미가 있지만, 나는 그 VB ='연산자에 대해 생각하지 않았다. – Kratz

관련 문제