c# - 解释 C# 聚合行为

标签 c#

我正在尝试学习 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/

相关文章:

c# - 如何在没有 LoadSelect 的情况下返回 asQueryable?

c# - 将 ASP.NET 网站管理工具功能引入网页

c# - 实现文件从 .net winforms 应用程序拖动到桌面?

c# - 德国 UI Culture de-DE 十进制更改为 asp.net 中的逗号值问题

c# - 在 asp.net core DI 中添加通用服务

c# - Windows 窗体,启用禁用控件取决于

c# - 在 Windows 服务中使用 Rx

c# - 创建遵循 MVVM 范例的菜单栏的最佳方法是什么?

c# - P/调用互操作助手 : Is this actually correct?

c# - 在按钮中添加 OnClientClick 时必填字段验证器不起作用