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:
var A = new Matrix< Double , DoubleCalculator>();
A.DoForAllElements( x => Math.Sqrt(x) );
Prawda, że proste?
Wykorzystanie wyrażeń lambda w naszych klasach…
Dziękujemy za publikację – Trackback z dotnetomaniak.pl…