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に存在しますか?
Aggregate
拡張メソッドを使用する必要があります。
double product = doubles.Aggregate(1.0, (prod, next) => prod * next);
詳細については、 [〜#〜] msdn [〜#〜] を参照してください。 seed
を指定してから、連続した値を計算する式を指定できます。