C#将Action <int>转换为lambda </int>

时间:2012-09-11 21:49:40

标签: c# lambda

我有以下代码:

int[] iArray = new int[] { 2, 3, 4 };
Action<int> action = new Action<int>(ShowSquares);
Array.ForEach(iArray, action);

private static void ShowSquares(int val)
{
    Console.WriteLine("{0:d} squared = {1:d}", val, val * val);
}

虽然此代码有效,但我想转换第二行

Action<int> action = new Action<int>(ShowSquares);

使用lambda表达式。

这可能吗?

TIA

3 个答案:

答案 0 :(得分:3)

int[] iArray = new int[] { 2, 3, 4 };
Array.ForEach(iArray, val => Console.WriteLine("{0:d} squared = {1:d}", val, val * val));

生成的lambda与您的ShowSquares方法相同。只要您以后不需要使用action,就可以在ForEach方法中将其声明为内联,而不是先声明操作。另外,作为一个了解代表和lambdas的练习,这很好,但在实践中,我建议:

int[] iArray = new int[] { 2, 3, 4 };
foreach (var val in iArray)
    Console.WriteLine("{0:d} squared = {1:d}", val, val * val));

或者,如果最后一行会在别处重复使用,请将其分解为ShowSquares方法。

答案 1 :(得分:3)

Action<int> action = (a) => ShowSquares(a); 

答案 2 :(得分:3)

Array.ForEach(iArray, i=>ShowSquares(i));