Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用VB.NET lambda表达式计算方差_Vb.net_Linq_Lambda - Fatal编程技术网

使用VB.NET lambda表达式计算方差

使用VB.NET lambda表达式计算方差,vb.net,linq,lambda,Vb.net,Linq,Lambda,我正在尝试转换以下用于方差计算的代码 描述成对应的VB.NET lambda表达式语法,但我被困在聚合函数的转换中 如何在VB.NET中实现该代码?以下内容仅适用于VB 10。以前的版本不支持多行lambda Dim d = source.Aggregate(0.0, Function(total, next) total += (next - avg) ^ 2 Return total End Function) Functionfoo-bar

我正在尝试转换以下用于方差计算的代码

描述成对应的VB.NET lambda表达式语法,但我被困在聚合函数的转换中


如何在VB.NET中实现该代码?

以下内容仅适用于VB 10。以前的版本不支持多行lambda

Dim d = source.Aggregate(0.0,
    Function(total, next)
        total += (next - avg) ^ 2
        Return total
    End Function)
Functionfoo-bar对应于C中的单个语句lambda foo=>bar,但这里需要多行lambda,它仅在VB10之后存在

然而,我对原始代码持谨慎态度。修改total似乎是一个错误,因为没有聚合重载通过引用传递其参数。因此,我建议原始代码是错误的,即使它实际上可以编译,并且VB中的正确解决方案如下所示:

Dim d = source.Aggregate(0.0, _
    Function(total, next) total + (next - avg) ^ 2)

此外,这不需要任何多行lambda,因此也适用于旧版本的VB。

以下内容仅适用于vb10。以前的版本不支持多行lambda

Dim d = source.Aggregate(0.0,
    Function(total, next)
        total += (next - avg) ^ 2
        Return total
    End Function)
Functionfoo-bar对应于C中的单个语句lambda foo=>bar,但这里需要多行lambda,它仅在VB10之后存在

然而,我对原始代码持谨慎态度。修改total似乎是一个错误,因为没有聚合重载通过引用传递其参数。因此,我建议原始代码是错误的,即使它实际上可以编译,并且VB中的正确解决方案如下所示:

Dim d = source.Aggregate(0.0, _
    Function(total, next) total + (next - avg) ^ 2)

此外,这不需要任何多行lambda,因此也适用于旧版本的VB。

好吧,total+=无论什么都将返回total的新值,因此它将工作,这只是一种误导,因为它与total+whatever的作用相同-在lambda中将total设置为一个新值没有任何作用。@BlueRaja:这就是我的意思。total+=whatever将返回total的新值,所以它会起作用,这只是一种误导,因为它与total+whatever做的事情是一样的——在lambda中将total设置为一个新值没有任何作用。@BlueRaja:这就是我的意思。