Wyrażenia lambda jest to nowa konstrukcja wprowadzona do C# 3.0 pozwalająca w łatwy i przejrzysty sposób na "szybko" zdefiniować jakąś funkcję. W tej notce napiszę jak można je użyć do definiowan
Nadrzędnym typem każdego wyrażenia lambda jest typ Func<T1, T2, T3, T4, TResult> gdzie T1-T4 są typami argumentów, a TResult typem wyniku. Nie jesteśmy oczywiście przywiązani do czterech parametrów wejściowych, gdyż zostały zdefiniowane typy od 0 do 4 argumentowe (zmienia się liczba wystąpień TX). TResult jest natomiast parametrem obowiązkowym.
W poniższym przykładzie zdefiniuję metodę w klasie Matrix, która jako argument będzie otrzymywała wyrażenie lambda (funkcję) i wykona ją dla każdego z elementów macierzy. Przechodząc do praktyki będzie to wyglądało tak:
public void DoForAllElements(Func< T , T> function) { for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { this[i, j] = function(this[i, j]); } } }
Wykorzystać ją możemy w sposób następujący:
A.DoForAllElements( x => Math.Sqrt(x) );
Prawda, że proste?