我在MSDN的Linq样本中发现了一个我想使用的名为Fold()的整洁方法。他们的例子:
double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 };
double product =
doubles.Fold((runningProduct, nextFactor) => runningProduct * nextFactor);
不幸的是,无论是在示例中还是在我自己的代码中,我都无法对此进行编译,并且在MSDN中找不到其他提及此方法的地方(例如Enumerable或Array扩展方法)。我得到的错误是一个普通的旧“不知道该错误”错误:
error CS1061: 'System.Array' does not contain a definition for 'Fold' and no
extension method 'Fold' accepting a first argument of type 'System.Array' could
be found (are you missing a using directive or an assembly reference?)
我正在使用其他一些我认为来自Linq的方法(例如Select()和Where()),并且我正在“使用System.Linq”,所以我认为一切都很好。
此方法确实存在于C#3.5中吗?如果存在,我在做什么错?
3
在您参考的示例页面上查看面包屑痕迹*-它将C#3称为未来产品。将来的产品通常会在发货前进行更改。像其他提到的一样,请参见Enumerable.Aggregate并玩得开心。:) * Visual C#开发人员中心>主页>产品信息>将来的版本> 101 LINQ示例>综合运算符
—
Curt Nichols,2009年