gpt4 book ai didi

vb.net - 使用 List(Of T).ForEach 方法更新值未按预期工作

转载 作者:行者123 更新时间:2023-12-02 11:30:49 24 4
gpt4 key购买 nike

我有以下代码,

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 函数执行并返回一个非零数字,但列表项成本属性从未更新。

该属性只是一个简单的属性,

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

如果我在属性的 Set 中设置断点,它永远不会被命中。

这是怎么回事?

最佳答案

这里的问题是你与赋值的比较令人困惑。

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

这会编译为 x.CostGetPartCost 之间的比较,而不是赋值。原因是 Function (x) 是一个 lambda 表达式,在表达式上下文中使用时 = 是比较而不是赋值。

要解决此问题,请使用语句/Sub 来生成赋值语义

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

注意:Sub lambda 在 Visual Studio 2010 之前不可用。

关于vb.net - 使用 List(Of T).ForEach 方法更新值未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6989014/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com