我正在尝试学习 C#,并使用 Aggregate。我可以在Javascript中使用reduce,没有问题,但由于某种原因我无法让我的代码运行。
我的最终目标是获取一个字符列表(都是数字),将它们转换为数字,聚合它们,然后返回一个值。但现在,我只想让 Aggregate 正常工作。
我在进行任何聚合之前设置:int[] test = {1,2,3,4,5};
当我有这个代码时:
int result = test.Aggregate ((current, total) => {
current += 1;
current + total;
});
有人告诉我:“只有赋值、调用、递增、递减和新对象表达式可以用作语句” 不过我见过多行 lambda 函数的示例。
我可以删除 current += 1;
行和花括号,它会起作用,但我的目标是在每次聚合之前运行几件事。
如何让 lambda 表达式执行多行代码?
最佳答案
当前 + 总计
在该上下文中不是有效的 C#。它仅在不带花括号的单行 lambda 的简写形式中有效。否则,您需要显式的 return
语句。
您需要将其改写为返回当前+总计;
当您在不带花括号的情况下使用它时,返回
是隐式的。
关于c# - 解释 C# 聚合行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30540232/