2

このコードが機能しないのはなぜですか?

public static IList<float> CreateModifiedList(IList<float> list)
{
    IList<float> modifiedList= list.Aggregate(new List<float> (), (l, item) =>l.Add(++item));

    return modifiedList;
}

Monoを使用してコンパイルしようとすると、次のエラーが発生します。

エラーCS0029:タイプvoid' to System.Collections.Generic.List'を暗黙的に変換できません

4

3 に答える 3

1

アグリゲート(floatのリスト)を返さないため、機能しませんl.Add(++item)-を返しますvoid。2番目の引数はタイプである必要がありFunc<List<float>, float, List<float>>ます。集計変数を返すようにコードを変更します。

(l, item) => { l.Add(++item); return l; }

ところで、あなたがしていることはこの方法で達成することができます:

IList<float> modifiedList = list.Select(item => ++item).ToList();
于 2012-10-29T14:01:11.367 に答える
1

変化する

l.Add(++item)

{ l.Add(++item); return l; }

集計の後ろにリストを返す必要があるため。

于 2012-10-29T14:03:45.787 に答える
0

の署名によるIEnumerable.Aggregateと、2 番目のパラメーターはFunc<TSource, TSource, TSource>- である必要があります(float, float) => float。しかしList.Addvoid関数であり、 を返しませんfloat。したがって、コンパイルエラー。

于 2012-10-29T14:04:57.377 に答える