Wykorzystanie wyrażeń lambda w naszych klasach

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? :)

One Response to “Wykorzystanie wyrażeń lambda w naszych klasach”

  1. Wykorzystanie wyrażeń lambda w naszych klasach…

    Dziękujemy za publikację – Trackback z dotnetomaniak.pl…

Leave a Reply