解释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表达式执行多行代码?
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;
});