【发布时间】:2009-01-28 03:49:10
【问题描述】:
我们知道,如果您有:
var aa = new [] { 1, 2, 3, 4, 5 };
for (int i = 0; i < aa.length; ++i)
{
aa[i] = aa[i] + 1;
}
真的
var aa = new [] { 1, 2, 3, 4, 5 };
Arrary.ForEach(aa, a => a + 1);
但是,如果我有这个怎么办:
var aa = new [] { 1, 2, 3, 4, 5 };
var ab = new [] { 1, 2, 3, 4, 5 };
for (int i = 0; i < aa.length; ++i)
{
aa[i] = ab[i] + 1;
}
我可以将其转换为仅使用一个 Array.ForEach 吗?或者,如果你想让所有的函数式编程变得疯狂,你会怎么做?笨重的 for 循环看起来很丑。
【问题讨论】:
-
我无法编译您的第一个 ForEach 代码。 “new Action(a => a + 1)”没有意义,因为“a => a + 1”是一个Action
,而“a + 1”不是一个语句。 -
对不起,我现在在工作,所以我不在 .Net framework 3.5 上。我确实知道使用委托会起作用,但我不确定是否可以将其更改为使用 lambda 表达式...
-
“或者,如果你想让所有的函数式编程变得疯狂,你会怎么做?” -- 使用 F# :)
标签: c# c#-3.0 functional-programming lambda