C# 将操作<int>转换为 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

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方法。

Action<int> action = (a) => ShowSquares(a); 
Array.ForEach(iArray, i=>ShowSquares(i));

最新更新