我有以下代码:
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
答案 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));