На этом шаге мы рассмотрим еще один пример использования лямбда-выражений.
Наконец, в примере ниже показано, как будет выглядеть программа из 177 шага, если вместо анонимных методов использовать лямбда-выражения. Здесь приведен пример получения результата с помощью лямбда-выражения.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace pr182_1 { delegate double Powers(double x); class Program { static Powers maker(int n) { Powers meth; // Значением переменной типа делегата присваивается // лямбда-выражение: meth = x => { double s=1; for(int i = 1; i <= n; i++) { s *= x; } return s; }; return meth; } static void Main() { Powers sqr = maker(2); Powers cube = maker(3); for(int i = 1; i <= 5; i++) { Console.WriteLine("{0,2}:{1,5}{2,5}{3,5}", i, sqr(i), cube(i), maker(4)(i)); } // Задержка: Console.ReadLine(); } } }
Ниже приведен результат выполнения программы:
Рис.1. Результат выполнения программы
Во всех приведенных на этом и предыдущих шагах примерах, хотя программный код изменился, результат выполнения программ такой же, как и у их предшественниц.
Несложно заметить, что для небольших (по объему кода) методов использование лямбда-выражений значительно упрощает структуру и читабельность программы.
В завершение заметим, что лямбда-выражения считаются более предпочтительным механизмом по сравнению с анонимными методами.
На следующем шаге мы начнем знакомиться с событиями.