Первая минута: комиссия
Некоторые учебники, блог комиссия будет называться, когда речь идет о событиях, хотя это событие является экземпляром комиссии, но для того, чтобы понять легче, но только комиссия сегодня говорить об этом событии. Первый кусок кода:
Код ниже, делегат завершения демонстрационного приложения. Комиссия делится на три этапа:
public
partial
class
WebForm3 : System.Web.UI.Page
{
//step01:首先用delegate定义一个委托 。
public
delegate
int
CalculatorAdd(
int
x,
int
y);
protected
void
Page_Load(
object
sender, EventArgs e)
{
//step03:用这个方法来实例化这个委托。
CalculatorAdd cAdd =
new
CalculatorAdd(Add);
//int result = cAdd(5, 6);
int
result = cAdd.Invoke(5,6);
}
// step02:声明一个方法来对应委托。
public
int
Add(
int
x,
int
y)
{
return
x + y;
}
}
Step01: Во-первых, делегат по определению делегата.
step02: способ объявить соответствующий делегат.
step03: использовать этот метод для создания экземпляра делегата.
На данный момент, делегат должен завершить, вы можете позвонить в комиссию.
Вторая минута: анонимные методы
Через минуту уже знаете, для завершения делегата приложения в три этапа, пропустив шаг не будет работать, если вы хотите, чтобы пересечь большой шаг, большой шаг берегитесь вытащил яйца. Но Microsoft не боится приглашать яйца, сделанные из не-принять три шага, чтобы два шага пошел! Таким образом, Microsoft будет использовать анонимные три способа, чтобы упростить процедуру, описанную выше. Как вы говорите, это вещи анонимные методы в C #, совершенно несущественные вещи, как C # глазурь на торте, это было фантастически и дать ему имя, называется синтаксисом.
public
partial
class
WebForm3 : System.Web.UI.Page
{
//step01:首先用delegate定义一个委托
public
delegate
int
CalculatorAdd(
int
x,
int
y);
protected
void
Page_Load(
object
sender, EventArgs e)
{
//step02:用这样的写法 delegate(int x, int y) { return x + y; },把一个方法赋值给委托
CalculatorAdd cAdd =
delegate
(
int
x,
int
y) {
return
x + y; };
int
result = cAdd.Invoke(5, 6);
}
}
Step01: Во-первых, делегат по определению делегата.
step02: с формулировкой делегата (Int х, у) INT {вернуться х + у;}, способ назначения делегата, на самом деле, такой подход анонимные методы.
В это время вы будете удивлены, обнаружив, что это не три шага два шага впереди ничего себе?
Третья минута: Лямбда выражения
Если бы очень простую программу, добавить несколько делегатов ключевое слово, этот код собирается стать эзотерические, эзотерические вещи, что люди, которые понимают меньше, так что это также может быть использован в качестве повышения разменной монетой. Но философия дизайна от Microsoft из C # прост в использовании. Microsoft пытается упростить делегат (INT х, Int у) {возвращение х + у;} анонимные методы появились Lambda. Я вижу несколько ниже лямбда-выражения написано:
public
partial
class
WebForm3 : System.Web.UI.Page
{
public
delegate
int
CalculatorAdd(
int
x,
int
y);
protected
void
Page_Load(
object
sender, EventArgs e)
{
//方法一:
CalculatorAdd cAdd1 = (
int
x,
int
y) => {
return
x + y; };
int
result1 = cAdd1(5, 6);
//方法二:
CalculatorAdd cAdd2 = (x, y) => {
return
x + y; };
int
result2 = cAdd2(5, 6);
//方法三:
CalculatorAdd cAdd3 = (x, y) => x + y;
int
result3 = cAdd2(5, 6);
}
}
Независимо от того или анонимные методы лямбда-выражений, завершил делегат приложения, не может избежать двух шагов, шаг заключается в определении делегата, еще один шаг, чтобы использовать метод для создания экземпляра делегата. Microsoft просто иметь этот двухступенчатый шаг синтеза идти. Func используется для упрощения определения делегата.
Таким образом, приложение может делегировать с Func <Int, Int, Int> cAdd3 = (х, у) => х + у; это утверждение для завершения, которое называется родовым делегат Func.
Пятая минута: дерево выражений
На самом деле, выражение дерево не имеет никакого отношения с клиентом, что-то делать, то, так сказать, выражение дерево находится делегат контейнера. Если я должен сказать, что это более профессионально, лямбда-выражения Деревья выражений получают доступ к структуре данных. Лямбда-выражения, чтобы использовать, когда, непосредственно из выражения вне, Вкомпилировать () может быть использован непосредственно. Следующий код:
public
partial
class
WebForm3 : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
Expression<Func<
int
,
int
,
int
>> exp = (x, y) => x + y;
Func<
int
,
int
,
int
> fun = exp.Compile();
int
result = fun(2, 3);
}
}