解释c#聚合行为

本文关键字:解释 | 更新日期: 2023-09-27 17:51:18

我正在尝试学习c#,并使用聚合。我可以在Javascript中使用reduce,但由于某种原因,我无法让我的代码运行。

我的最终目标是获取一个字符列表(它们都是数字),将它们转换为数字,聚合它们,并返回一个值。但现在,我只想让聚合工作。

我在做任何聚合之前设置这个:int[] test = {1,2,3,4,5};

当我有这样的代码:

int result = test.Aggregate ((current, total) => {
    current += 1;
    current + total;
});

我被告知:"只有赋值、调用、递增、递减和new对象表达式可以作为语句使用"然而,我已经看到了多行lambda函数的例子。

我可以删除current += 1;行和花括号,它将工作,但我的目标是在每次聚合之前运行几个东西。

我如何有一个lambda表达式执行多行代码?

解释c#聚合行为

current + total在该上下文中是无效的c#。它只在没有花括号的单行lambda的简写形式下有效。否则,需要显式的return语句。

你需要将其改写为return current + total;

当不使用花括号时,return是隐式的。

返回值并使用花括号的lambda语句需要'return'语句:

int[] test = { 1, 2, 3, 4, 5 };
            int result = test.Aggregate((current, total) =>
            {
                current += 1;
                current += total;
                return current;
            });