Именованные методыИменованные методы были единственным способом объявления делегата в версиях C#, предшествующих версии 2.0. Анонимные методы были представлены.

Презентация:



Advertisements
Похожие презентации
Делегаты Делегат эти объект, который безопасно инкапсулирует метод, его действие схоже с указателем функции в C и C++. Делегаты используются для передачи.
Advertisements

Высокоуровневые методы информатики и программирования Лекция 9 Делегаты.
ДЕЛЕГАТЫ Лекция 7 1. Зачем нужны делегаты 2 И данные, и код располагаются в памяти компьютера по определенным адресам. Передача адресов данных в C# происходит.
Киньзибаев Рашид. тип объектов, которые могут ссылаться на метод.
Sin37 0 cos7 0 cos37 0 sin7 0 Cos 40 0 Cos 5 0 sin40 0 sin5 0.
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
Существует три разновидности комментариев: комментарии в одной строке, комментарии в нескольких строках, комментарии для документирования. Комментарии,
М.Ю. Харламов, ВНУ им. В.Даля, Генерация объектного кода это перевод компилятором внутреннего представ­ления исходной программы в цепочку символов.
1 Кубенский А.А. Функциональное программирование. Глава 5. Системы исполнения функциональных программ. Глава 5. Системы исполнения функциональных программ.
Практическое занятие 6. Функции. Большинство языков программирования используют понятия функции и процедуры. C++ формально не поддерживает понятие процедуры,
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
М.Ю. Харламов, ВНУ им. В.Даля, Семантический анализатор Семантический анализатор выполняет следующие основные действия: проверку соблюдения во входной.
Лекция 13. Введение в ООП. Часть 4 Красс Александр СПбГУ ИТМО, 2008.
Часть 1 Простейшая программа Программа на языке QBASIC состоит из последовательности инструкций – команд компилятору. Если в строке записано несколько.
PHP PHP (Hypertext Preprocessor) Язык программирования общего назначения, применяемый для разработки веб-приложений.
Лекция 1 Классификация С++. Парадигмы программирования Императивная Функциональная Декларативная (логическая) Инструкция 1 Инструкция 2 Инструкция 3 Инструкция.
Система программ «1 С: ПРЕДПРИЯТИЕ» Структура Элементы Средства.
Древовидная модель оказывается довольно эффективной для представления динамических данных с целью быстрого поиска информации. Деревья являются одними из.
Основы ООП и C# Работа с объектами и классами. Классы Класс специальный тип данных для описания объектов. Он определяет данные и поведение типа. Определение.
Работу выполнили ученицы 9 «Б» класса Гордеева Татьяна и Шебаршова Рита.
Транксрипт:

Именованные методыИменованные методы были единственным способом объявления делегата в версиях C#, предшествующих версии 2.0. Анонимные методы были представлены в C# 2.0делегата

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

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

Анонимные методы прекрасно справляются с поставленной перед ними задачей. Но в C# 3.0 пошли дальше, введя более привычную для математиков форму записи анонимного метода в виде лямбда-выражения. Вместо записи анонимного метода в форме: delegate [( )] используется форма, задающая лямбда-выражение: [( )] =>

В методе анонимный метод определяется следующим образом: double result = integral.EvalIntegral(a, b, eps, delegate(double x) { return Math.Sin(x) + Math.Cos(x); }); Заменим это определение лямбда- выражением: double result = integral.EvalIntegral(a, b, eps, x => { return Math.Sin(x) + Math.Cos(x); });

Деревья выражений представляют языковый код в виде данных. Данные хранятся в древовидной структуре. Каждый узел в дереве выражений представляет выражение, например вызов метода или двоичную операцию, такую как x < y.

Когда лямбда-выражение назначается переменной с типом Expression, компилятор отражает дерево выражений, представляющее лямбда-выражение.Expression Тип Expression предоставляет метод Compile, который компилирует код, представляемый деревом выражений, в исполняемый делегат. Этот исполняемый код эквивалентен исполняемому коду, который бы генерировался, если бы лямбда-выражение было назначено типу делегата первоначально.Expression Compile

Expressions можно построить двумя методами в compile-time, и в run-time. В сompile-time компилятор сам разберет наш код и соберет из него Expression. Например, для вот такой строчки: Expression > ex = s => s.Replace("x", "yy").Length*2;

Возьмем выражение (n+1) и превратим его в 2*(n+1):

Если выражение LINQ представлено в данных (как дерево выражений), а не в IL (как делегат), то вы можете оперировать с ним. Есть возможность применить алгоритм, который может выявлять места, где следует провести оптимизацию, тем самым упрощая выражение.