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