Метод
List<TElement>.ForEach(Action<TElement>)
принимает в качестве параметра
делегат (то есть, по сути, указатель на функцию), который обрабатывает каждый элемент списка.
Запись такого вида:
var list = new List<int>() { 1, 2, 3 };
list.ForEach(element => { Console.Write(element * element + " "); } );
Выведет на экран следующее: 1 4 9
Этот кусок кода полностью эквивалентен такому:
void Method(){
var list = new List<int>() { 1, 2, 3 };
list.ForEach(Square);
}
void Square(int element){
Console.Write(element*element + " ");
}
Таким образом, и в первом и во втором случае, переменная
element является текущим обрабатываемым значением из списка.