На этом шаге мы приведем текст еще одной программы, где используются лямбда-выражения.
В примере ниже представлена новая версия программы из из 175 шага, где лямбда-выражение выступает в качестве аргумента.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace pr180_1 { delegate char MyDelegate(int n); class MyClass { public char symbol; public MyDelegate get; public MyClass(char s, MyDelegate md) { symbol = s; get = md; } public void set(MyDelegate md) { get = md; } } class Program { static void Main() { // Создание объекта. Вторьм аргументом является // лямбда-выражение: MyClass obj = new MyClass('K', n => (char)('A' + n)); Console.WriteLine("Символ: \'{0}\'", obj.get(3)); // Вызов метода, аргументом которому передано // лямбда-выражение: obj.set(n => (char)(obj.symbol + n)); Console.WriteLine("Символ: \'{0}\'", obj.get(3)); // Задержка: Console.ReadLine(); } } }
Ниже представлен результат выполнения программы:
Рис.1. Результат выполнения программы
На следующем шаге мы продолжим изучение этого вопроса.