На этом шаге мы рассмотрим программу, где вместо анонимных методов используются лямбда-выражения.
В примере ниже представлена версия программы из 174 шага, но вместо анонимных методов использованы лямбда-выражения (здесь и в следующих шагах несущественные комментарии удалены, а важные места выделены жирным шрифтом).
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace pr179_1 { delegate int Alpha(int n); delegate void Bravo(string t); class MyClass { public int number; public MyClass(int n) { number = n; } public Alpha method; } class Program { static void Main() { MyClass A = new MyClass(100); MyClass B = new MyClass(200); // Полю объекта значением присваивается // лямбда-выражение: A.method = n=>A.number + n; // Полю объекта значением присваивается // лямбда-выражение: B.method = (int n)=>{ return B.number - n; }; int x = 80; Console.WriteLine("A.method({0}) = {1}", x, A.method(x)); A.number = 300; Console.WriteLine("A.method({0}) = {1}", x, A.method(x)); Console.WriteLine("B.method({0}) = {1}", x, B.method(x)); Bravo show; // Присваивание переменной лямбда-выражения: show = t=>Console.WriteLine("Teкст: \"{0}\"", t); show("Bravo"); // Присваивание переменной лямбда-выражения: show = (string t)=>{ for(int k = 0; k < t.Length; k++) { Console.Write("|" + t[k]); } Console.WriteLine("|"); }; show("Bravo"); // Задержка: Console.ReadLine(); } } }
Результат выполнения программы следующий:
Рис.1. Результат выполнения программы
На следующем шаге мы продолжим изучение этого вопроса.