Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемИнга Рюмина
2 Именованные методыИменованные методы были единственным способом объявления делегата в версиях C#, предшествующих версии 2.0. Анонимные методы были представлены в C# 2.0делегата
3 Использование анонимных методов позволяет сократить издержки на кодирование при создании делегатов, поскольку не требуется создавать отдельный метод.
4 В C# 3.0 и более версиях поздних лямбда-выражения заменяют анонимные методы и являются предпочтительным способом написания встроенного кода.
5 Анонимные методы прекрасно справляются с поставленной перед ними задачей. Но в C# 3.0 пошли дальше, введя более привычную для математиков форму записи анонимного метода в виде лямбда-выражения. Вместо записи анонимного метода в форме: delegate [( )] используется форма, задающая лямбда-выражение: [( )] =>
6 В методе анонимный метод определяется следующим образом: 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); });
7 Деревья выражений представляют языковый код в виде данных. Данные хранятся в древовидной структуре. Каждый узел в дереве выражений представляет выражение, например вызов метода или двоичную операцию, такую как x < y.
9 Когда лямбда-выражение назначается переменной с типом Expression, компилятор отражает дерево выражений, представляющее лямбда-выражение.Expression Тип Expression предоставляет метод Compile, который компилирует код, представляемый деревом выражений, в исполняемый делегат. Этот исполняемый код эквивалентен исполняемому коду, который бы генерировался, если бы лямбда-выражение было назначено типу делегата первоначально.Expression Compile
10 Expressions можно построить двумя методами в compile-time, и в run-time. В сompile-time компилятор сам разберет наш код и соберет из него Expression. Например, для вот такой строчки: Expression > ex = s => s.Replace("x", "yy").Length*2;
11 Возьмем выражение (n+1) и превратим его в 2*(n+1):
12 Если выражение LINQ представлено в данных (как дерево выражений), а не в IL (как делегат), то вы можете оперировать с ним. Есть возможность применить алгоритм, который может выявлять места, где следует провести оптимизацию, тем самым упрощая выражение.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.