Главная · Карта сайта · Поиск · Статьи · Компьютерные курсы · Обучающие программы · Открытые проекты · Веб-программирование · Создание интернет-сайта · Полезные ссылки · Глоссарий · Контакты · Декабрь 09 2016 20:23:11
Последнее опубликованное

Что такое Model-View-Controller
Pattern Model-View-Controller

Как создать свой веб-сайт
Как создать свой сайт в интернете

Разное
Статистика

Программирование на C#. Лямбда-выражения


[Назад] [Исключения и другие важные моменты]

4.4. Анонимные делегаты и лямбда-выражения

Ну и в заключение пару слов о существующих упрощениях синтаксиса работы с событиями и делегатами. Если вам необходимо добавить в качестве обработчика события некий код, который, по вашему мнению, не заслуживает отдельного метода с внятным именем, то вы можете воспользоваться синтаксисом анонимных делегатов или лямбда-выражений, как это показано в заключительном примере этого раздела. Точно также можно использовать подобные конструкции для избавления от повторяющегося кода в рамках одного метода. Все это позволит вам применять приемы рефакторинга кода без необходимости создавать отдельные вспомогательные методы с искусственными именами.

using System;
using System.Windows.Forms;
namespace CSharpQuickGuide
{
    public static class LambdaSample
    {
        public static void Test()
        {
            MyClassWithEvent myClass = new MyClassWithEvent();
            //Добавляем обработчик события: анонимный делегат
            myClass.MyEvent += delegate(object sender, EventArgs _args)
            {
                MessageBox.Show(_args.ToString(), "Анонимный делегат");
            };

            myClass.DoSomething();

            //Удалить ссылку на анонимный делегат уже не получится,
            //поэтому в результате работы этого примера сообщение с
            //заголовком "Анонимный делегат" появится два раза!

            //Добавляем обработчик события: лямбда-выражение
            //(упрощенный вариант определить анонимного делегата)
            myClass.MyEvent += (sender, _args) =>
            {
                MessageBox.Show(_args.ToString(), "Лямбда-выражение");
            };

            myClass.DoSomethingMore();  
        }
    }
}

Лямбда-выражения и анонимные делегаты в языке программирования C# допускают замыкание. Это означает, что внутри выделенного подобным образом кода вы также можете использовать переменные, которые описаны в вызывающем методе, но не переданы на вход в качестве аргументов. Все такие переменные образуют контекст вызова или контекст использования лямбда-выражения и анонимного делегата.

На этом раздел о событиях и делегатах считаю нужным закончить. Тонкости обработки событий, возбуждаемых в параллельных потоках будут рассмотрены в разделе о параллельных вычислениях.



[Назад]

Компьютерные курсы и курсы программирования
Основы программирования

Курс для начинающих программистов на C# и VB.NET.

SQL 25™

Построение SQL запросов и работа с базой данных.

C# Quick Guide™

Программирование на C#. Краткое руководство.

RegEx

Применение регулярных выражений.

Plug-in архитектура

Примеры программной Plug-in архитектуры.

XML и его расширения

Язык разметки XML и его расширения с примерами.

HTML и разметка гипертекста

Языки HTML, XHTML и CSS с примерами разметки.

Основы веб-дизайна

Основы веб-дизайна: решения типовых задач верстки.

Программирование на PHP

Руководство по программированию на PHP для начинающих.

Справочные материалы

Шаблоны проектирования
Каталог шаблонов проектирования программных компонентов.

Рефакторинг кода
Каталог приемов рефакторинга программного кода.

Гость
Имя

Пароль



Забыли пароль?
Запросите новый здесь
.
Coding Craft. Все права защищены © 2011. Проект Инициативного Народного Фронта Образования - ИНФО-проект.