2011-08-08 3 views
3

I次のコードは、使い方一覧は期待どおりに動作しない値を更新するために

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ラムダは、Visual Studioまでは利用できません2010

+0

ああ、私は 'Function'」のdidnのことに気づいていた:

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

注割り当てのセマンティクスを生成するために、この使用に声明/ Subを修正するには

文脈では意味をなさないが、私はそのVB = '演算子については考えなかった。 – Kratz