Делегаты. Примеры делегатов

Содержание

Слайд 2

ДЕЛЕГАТЫ

Кроме свойств и методов классы могут содержать делегаты и события. Делегаты представляют

ДЕЛЕГАТЫ Кроме свойств и методов классы могут содержать делегаты и события. Делегаты
такие объекты, которые указывают на другие методы. То есть делегаты - это указатели на методы. С помощью делегатов мы можем вызвать определенные методы в ответ на некоторые произошедшие действия. То есть, по сути, делегаты раскрывают нам функционал функций обратного вызова.

Слайд 3

ПРИМЕРЫ ДЕЛЕГАТОВ

delegate int Operation(int x, int y);
delegate void GetMessage();

Делегат определяет то, какие

ПРИМЕРЫ ДЕЛЕГАТОВ delegate int Operation(int x, int y); delegate void GetMessage(); Делегат
параметры он принимает, и что именно возвращает. Далее мы можем присваивать переменным типа нашего делегата методы с такой же сигнатурой

Слайд 4

class Program {
    delegate void GetMessage(); // 1. Объявляем делегат
    static void Main(string[] args)   {
        GetMessage

class Program { delegate void GetMessage(); // 1. Объявляем делегат static void
del; // 2. Создаем переменную делегата
        if (DateTime.Now.Hour < 12)    {
            del = GoodMorning; // 3. Присваиваем этой переменной адрес метода
        }   else   {
            del = GoodEvening;
        }
        del.Invoke(); // 4. Вызываем метод
        Console.ReadLine();
    }
    private static void GoodMorning()  {
        Console.WriteLine("Good Morning");
    }
    private static void GoodEvening() {
        Console.WriteLine("Good Evening");
    }
}

Слайд 5

СОБЫТИЯ

delegate void SampleDelegaet();
event SampleDelegate SampleEvent();
//имеется метод
void SomeAction()
{ Console.WriteLine(“Some”);}
//наш код
MyType v = new

СОБЫТИЯ delegate void SampleDelegaet(); event SampleDelegate SampleEvent(); //имеется метод void SomeAction() {
MyType();
v.SampleEvent += SomeAction;
//Теперь, когда будет необходимо, метод SomeAction будет вызван, и нам не надо про это думать.

События используются для выполнения определенного когда при наступлении некоторого события. Это лишь обертки над делегатами, но очень удобные
Мы можем подписывать на событие неограниченное количество обработчиков, при помощи +=, при необходимости, мы можем отписать обработчик, используя -=

Слайд 6

АНОНИМНЫЕ МЕТОДЫ

v.SampleEvent += delegate()
{
Console.WriteLine(“Anon method”);
}

При подписке на событие или передаче делегата не

АНОНИМНЫЕ МЕТОДЫ v.SampleEvent += delegate() { Console.WriteLine(“Anon method”); } При подписке на
всегда удобно писать непосредственный код в отдельных методах. Мы можем написать необходимый код прямо на месте
В скобках необходимо указывать имена принимаемых делегатом параметров, далее в фигурных скобках непосредственно исполняемый код

Слайд 7

ЛЯМБДЫ

Лямбда-выражения представляют упрощенную запись анонимных методов. Лямбда-выражения позволяют создать емкие лаконичные методы,

ЛЯМБДЫ Лямбда-выражения представляют упрощенную запись анонимных методов. Лямбда-выражения позволяют создать емкие лаконичные
которые могут возвращать некоторое значение и которые можно передать в качестве параметров в другие методы.
Ламбда-выражения имеют следующий синтаксис: слева от лямбда-оператора => определяется список параметров, а справа блок выражений, использующий эти параметры: (список_параметров) => выражение.

Слайд 8

ПРИМЕР ПРОСТОЙ ЛЯМБДЫ

class Program
{
    delegate int Square(int x); // объявляем делегат,принимающий int и

ПРИМЕР ПРОСТОЙ ЛЯМБДЫ class Program { delegate int Square(int x); // объявляем
возвращающий int
    static void Main(string[] args)
    {
        Square squareInt = i => i * i; // объекту делегата присваивается лямбда-выражение
int z = squareInt(6); // используем делегат
        Console.WriteLine(z); // выводит число 36
        Console.Read();
    }
}

Слайд 9

ACTION, FUNC

В C# имеются уже определенные обобщенные делегаты, которые мы можем использовать,

ACTION, FUNC В C# имеются уже определенные обобщенные делегаты, которые мы можем
не прибегая к написанию собственных.
Так, Делегат Action определяет делегат, которые ничего не возвращает, но принимает параметр типа T. Параметром может быть несколько Action
А делегат Func используется для возвращения некоторого значения. Тип возвращаемого значения указывается последним. Func ничего не принимает, возвращает TResult. А Func принимает T1 и T2, и возвращает TResult.
Имя файла: Делегаты.-Примеры-делегатов.pptx
Количество просмотров: 25
Количество скачиваний: 0