Делегат — это тип ссылки, который хранит данные о сигнатуре метода.
Делегат — это объект, который ссылается на метод.
Объект делегата может вызывать разные методы во время выполнения, а не во время компиляции.
Синтаксис:
[атрибут] модификатор_доступа delegate тип имя_делегата ([список_параметров]);
Делегат — это объект, который ссылается на метод.
Объект делегата может вызывать разные методы во время выполнения, а не во время компиляции.
Синтаксис:
[атрибут] модификатор_доступа delegate тип имя_делегата ([список_параметров]);
Лямбда-выражение — это анонимная функция, которая содержит выражения и операторы и может использоваться для создания делегатов или типов дерева выражений.
Во всех лямбда-выражениях используется лямбда-оператор =>, который читается как "переходит в".
Левая часть лямбда-оператора определяет параметры ввода, если таковые имеются, а правая часть содержит выражение или блок оператора.
Во всех лямбда-выражениях используется лямбда-оператор =>, который читается как "переходит в".
Левая часть лямбда-оператора определяет параметры ввода, если таковые имеются, а правая часть содержит выражение или блок оператора.
Main.cs
using
System;
public
delegate
int
dlgSum(
int
arg0,
int
arg1);
public
delegate
void
dlgMessage(
string
arg);
public
delegate
void
dlgTextShow();
//обратите ВНИМАНИЕ, класс вообще ОТСУТСТВУЕТ
class
Program {
-
public
static
int
Main() {
-
//создание анонимного метода
-
//ВНИМАНИЕ! в конце метода ставится точка с запятой
-
//1 вариант
-
dlgSum dS1 = (
int
arg0,
int
arg1) => {
-
return
(arg0 + arg1);
-
};
-
//2 вариант
-
dlgSum dS2 = (
int
arg0,
int
arg1) => (arg0 + arg1);
-
//3 вариант
-
dlgSum dS3 = (
int
arg0,
int
arg1) => arg0 + arg1;
-
//реализация объекта делегата
-
//обратите ВНИМАНИЕ, к объекту делегата добавляются круглые скобки, как у метода
-
Console.WriteLine(dS1(10, 20));
-
//обратите ВНИМАНИЕ, если метод имеет один параметр,
-
//то его не обязательно брать в круглые скобки
-
dlgMessage dM = arg => Console.WriteLine(arg);
-
dM(
"Hello World!"
);
-
//обратите ВНИМАНИЕ, если метод не имеет параметров
-
dlgTextShow dTS = () => Console.WriteLine(
"Привет Мир!"
);
-
dTS();
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
public
delegate
int
dlgSum(
int
arg0,
int
arg1);
public
delegate
void
dlgMessage(
string
arg);
public
delegate
void
dlgTextShow();
//обратите ВНИМАНИЕ, класс вообще ОТСУТСТВУЕТ
class
Program {
-
public
static
int
Main() {
-
//создание анонимного метода
-
//ВНИМАНИЕ! в конце метода ставится точка с запятой
-
//1 вариант
-
dlgSum dS1 = (
int
arg0,
int
arg1) => {
-
return
(arg0 + arg1);
-
};
-
//2 вариант
-
dlgSum dS2 = (
int
arg0,
int
arg1) => (arg0 + arg1);
-
//3 вариант
-
dlgSum dS3 = (
int
arg0,
int
arg1) => arg0 + arg1;
-
//реализация объекта делегата
-
//обратите ВНИМАНИЕ, к объекту делегата добавляются круглые скобки, как у метода
-
Console.WriteLine(dS1(10, 20));
-
//обратите ВНИМАНИЕ, если метод имеет один параметр,
-
//то его не обязательно брать в круглые скобки
-
dlgMessage dM = arg => Console.WriteLine(arg);
-
dM(
"Hello World!"
);
-
//обратите ВНИМАНИЕ, если метод не имеет параметров
-
dlgTextShow dTS = () => Console.WriteLine(
"Привет Мир!"
);
-
dTS();
-
Console.ReadKey();
-
return
0;
-
}
}
30
Hello World!
Привет Мир!
Hello World!
Привет Мир!