Kra*_*atz 3 vb.net lambda extension-methods anonymous-methods
我有以下代码,
PB.ForEach(Function(x) x.Cost = GetPartCost(x.PartNumber, x.Units, x.Cost, FB))
Return PB.Sum(Function(x) (x.Cost * x.Qty))
Run Code Online (Sandbox Code Playgroud)
但它始终返回0.我已检查并且GetPartCost函数执行并返回非零数字,但列表项成本属性永远不会更新.
该物业只是一个简单的财产,
Public Property Cost() As Double
Get
Return _Cost
End Get
Set(ByVal value As Double)
_Cost = value
End Set
End Property
Run Code Online (Sandbox Code Playgroud)
如果我Set在属性中设置断点,它永远不会被击中.
这是怎么回事?
Jar*_*Par 11
这里的问题是你与作业的混淆比较.
Function(x) x.Cost = GetPartCost ...
Run Code Online (Sandbox Code Playgroud)
这可以归结为分配之间的比较,x.Cost而GetPartCost不是分配.原因是它Function (x)是一个表达式lambda,当在表达式的上下文中使用时,它=是比较而不是赋值.
要解决此问题,请使用语句/ Sub来生成赋值语义
Sub(x) x.Cost = GetPartCost ...
Run Code Online (Sandbox Code Playgroud)
注意:Sub在Visual Studio 2010之前,lambda不可用.
| 归档时间: |
|
| 查看次数: |
2710 次 |
| 最近记录: |