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