🗊Презентация Делегаты (C#, Лекция 5)

Нажмите для полного просмотра!
Делегаты (C#, Лекция 5), слайд №1Делегаты (C#, Лекция 5), слайд №2Делегаты (C#, Лекция 5), слайд №3Делегаты (C#, Лекция 5), слайд №4Делегаты (C#, Лекция 5), слайд №5Делегаты (C#, Лекция 5), слайд №6Делегаты (C#, Лекция 5), слайд №7Делегаты (C#, Лекция 5), слайд №8Делегаты (C#, Лекция 5), слайд №9Делегаты (C#, Лекция 5), слайд №10Делегаты (C#, Лекция 5), слайд №11Делегаты (C#, Лекция 5), слайд №12Делегаты (C#, Лекция 5), слайд №13Делегаты (C#, Лекция 5), слайд №14Делегаты (C#, Лекция 5), слайд №15Делегаты (C#, Лекция 5), слайд №16Делегаты (C#, Лекция 5), слайд №17Делегаты (C#, Лекция 5), слайд №18Делегаты (C#, Лекция 5), слайд №19Делегаты (C#, Лекция 5), слайд №20Делегаты (C#, Лекция 5), слайд №21Делегаты (C#, Лекция 5), слайд №22Делегаты (C#, Лекция 5), слайд №23Делегаты (C#, Лекция 5), слайд №24Делегаты (C#, Лекция 5), слайд №25Делегаты (C#, Лекция 5), слайд №26Делегаты (C#, Лекция 5), слайд №27Делегаты (C#, Лекция 5), слайд №28Делегаты (C#, Лекция 5), слайд №29Делегаты (C#, Лекция 5), слайд №30Делегаты (C#, Лекция 5), слайд №31Делегаты (C#, Лекция 5), слайд №32Делегаты (C#, Лекция 5), слайд №33Делегаты (C#, Лекция 5), слайд №34Делегаты (C#, Лекция 5), слайд №35Делегаты (C#, Лекция 5), слайд №36Делегаты (C#, Лекция 5), слайд №37Делегаты (C#, Лекция 5), слайд №38Делегаты (C#, Лекция 5), слайд №39Делегаты (C#, Лекция 5), слайд №40Делегаты (C#, Лекция 5), слайд №41Делегаты (C#, Лекция 5), слайд №42Делегаты (C#, Лекция 5), слайд №43Делегаты (C#, Лекция 5), слайд №44Делегаты (C#, Лекция 5), слайд №45Делегаты (C#, Лекция 5), слайд №46Делегаты (C#, Лекция 5), слайд №47Делегаты (C#, Лекция 5), слайд №48Делегаты (C#, Лекция 5), слайд №49Делегаты (C#, Лекция 5), слайд №50Делегаты (C#, Лекция 5), слайд №51

Содержание

Вы можете ознакомиться и скачать презентацию на тему Делегаты (C#, Лекция 5). Доклад-сообщение содержит 51 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Лекция 5
Описание слайда:
Лекция 5

Слайд 2





Делегаты. Что это такое?
Делегат - это тип, который представляет собой ссылки на методы с определенным списком параметров и возвращаемым типом.
Описание слайда:
Делегаты. Что это такое? Делегат - это тип, который представляет собой ссылки на методы с определенным списком параметров и возвращаемым типом.

Слайд 3





Делегаты. Что это такое?
При создании экземпляра делегата этот экземпляр можно связать с любым методом с совместимой сигнатурой и возвращаемым типом. 
Метод можно вызвать (активировать) с помощью экземпляра делегата.
Описание слайда:
Делегаты. Что это такое? При создании экземпляра делегата этот экземпляр можно связать с любым методом с совместимой сигнатурой и возвращаемым типом. Метод можно вызвать (активировать) с помощью экземпляра делегата.

Слайд 4





Делегаты. Что это такое?
Поскольку созданный экземпляр делегата является объектом, его можно передавать как параметр или назначать свойству. 
Это позволяет методу принимать делегат в качестве параметра и вызывать делегат в дальнейшем.
Описание слайда:
Делегаты. Что это такое? Поскольку созданный экземпляр делегата является объектом, его можно передавать как параметр или назначать свойству. Это позволяет методу принимать делегат в качестве параметра и вызывать делегат в дальнейшем.

Слайд 5





Делегаты. Что это такое?
Эта процедура называется асинхронным обратным вызовом и обычно используется для уведомления вызывающего объекта о завершении длительной операции.
Описание слайда:
Делегаты. Что это такое? Эта процедура называется асинхронным обратным вызовом и обычно используется для уведомления вызывающего объекта о завершении длительной операции.

Слайд 6





Как его создать?
<мод. доступа> delegate <возвр. знач.> 
<имя делегата>(<параметры>);
Примеры:
public delegate int PerformCalc (int x, int y);
public delegate void Del(string message);
Описание слайда:
Как его создать? <мод. доступа> delegate <возвр. знач.> <имя делегата>(<параметры>); Примеры: public delegate int PerformCalc (int x, int y); public delegate void Del(string message);

Слайд 7





Пример
Возьмем делегат:
public delegate void Del(string message);
Создадим метод, где его будем использовать
public void Method (int param1, Del callback) 
{ 
	callback("The number is: " + 
param1.ToString()); 
}
Описание слайда:
Пример Возьмем делегат: public delegate void Del(string message); Создадим метод, где его будем использовать public void Method (int param1, Del callback) { callback("The number is: " + param1.ToString()); }

Слайд 8





Пример
Делегат может создаваться вне класса, как новый тип
Описание слайда:
Пример Делегат может создаваться вне класса, как новый тип

Слайд 9





Пример
Теперь создадим функцию, которая будет соответствовать нашему делегату
public static void PrintMes(string mes)
        {
            Console.WriteLine(mes);
        }
Создадим объект от класса и вызовем тот метод
Описание слайда:
Пример Теперь создадим функцию, которая будет соответствовать нашему делегату public static void PrintMes(string mes) { Console.WriteLine(mes); } Создадим объект от класса и вызовем тот метод

Слайд 10





Пример
Мы передали функцию PrintMes как параметр в функцию
Описание слайда:
Пример Мы передали функцию PrintMes как параметр в функцию

Слайд 11





Пример. Вариант 2
А можно и так. Создали переменную от типа нашего делегата
Описание слайда:
Пример. Вариант 2 А можно и так. Создали переменную от типа нашего делегата

Слайд 12





2 в 1
При вызове делегат может вызывать сразу несколько методов. 
Это называется многоадресностью.
Чтобы добавить в список методов делегата (список вызова) дополнительный метод, необходимо просто добавить два делегата с помощью оператора сложения или назначения сложения ("+" или "+=").
Описание слайда:
2 в 1 При вызове делегат может вызывать сразу несколько методов. Это называется многоадресностью. Чтобы добавить в список методов делегата (список вызова) дополнительный метод, необходимо просто добавить два делегата с помощью оператора сложения или назначения сложения ("+" или "+=").

Слайд 13





2 в 1
2 метода, вызываемые через 1 делегат.
Методов на делегат можно прикрутить сколько угодно
Описание слайда:
2 в 1 2 метода, вызываемые через 1 делегат. Методов на делегат можно прикрутить сколько угодно

Слайд 14





Пример. Вариант 3
Делегат можно создать через конструктор
Описание слайда:
Пример. Вариант 3 Делегат можно создать через конструктор

Слайд 15





Удаление метода
Чтобы удалить метод из списка вызова, используйте оператор decrement или назначения decrement ("-" или «-=»).
Описание слайда:
Удаление метода Чтобы удалить метод из списка вызова, используйте оператор decrement или назначения decrement ("-" или «-=»).

Слайд 16





Удаление метода
И «отписать метод»
Описание слайда:
Удаление метода И «отписать метод»

Слайд 17





Анонимные методы
Что означает «анонимный метод»?
Создание анонимных методов является, по существу, способом передачи блока кода в качестве параметра делегата.
Описание слайда:
Анонимные методы Что означает «анонимный метод»? Создание анонимных методов является, по существу, способом передачи блока кода в качестве параметра делегата.

Слайд 18





Пример
Пример создания анонимного метода.
Сам метод:
delegate(int k) {Console.WriteLine("Число: " + 
k); };
Описание слайда:
Пример Пример создания анонимного метода. Сам метод: delegate(int k) {Console.WriteLine("Число: " + k); };

Слайд 19





Использование метода
Пример получения такого анонимного метода и вызов его
Описание слайда:
Использование метода Пример получения такого анонимного метода и вызов его

Слайд 20





Зачем они нужны
Использование анонимных методов позволяет сократить издержки на кодирование при создании делегатов, поскольку не требуется создавать отдельный метод.
Например, указание блока кода вместо делегата может быть целесообразно в ситуации, когда создание метода может показаться ненужным действием.
Описание слайда:
Зачем они нужны Использование анонимных методов позволяет сократить издержки на кодирование при создании делегатов, поскольку не требуется создавать отдельный метод. Например, указание блока кода вместо делегата может быть целесообразно в ситуации, когда создание метода может показаться ненужным действием.

Слайд 21





Немного истории
Именованные методы были единственным способом объявления делегата в версиях C#, предшествующих версии 2.0. 
 Анонимные методы появились в C# 2.0 (Visual Studio 2005)
А в версии C# 3.0 (Visual Studio 2008) их заменили лямбда-выражения.
Описание слайда:
Немного истории Именованные методы были единственным способом объявления делегата в версиях C#, предшествующих версии 2.0. Анонимные методы появились в C# 2.0 (Visual Studio 2005) А в версии C# 3.0 (Visual Studio 2008) их заменили лямбда-выражения.

Слайд 22





Лямбда-выражения
Лямбда-выражение — это анонимная функция, с помощью которой можно создавать типы делегатов или деревьев выражений.
Лямбда-выражения особенно полезны при написании выражений запросов LINQ.
Описание слайда:
Лямбда-выражения Лямбда-выражение — это анонимная функция, с помощью которой можно создавать типы делегатов или деревьев выражений. Лямбда-выражения особенно полезны при написании выражений запросов LINQ.

Слайд 23





Лямбда-выражения
Чтобы создать лямбда-выражение, необходимо указать входные параметры (если они есть) с левой стороны лямбда-оператора =>, и поместить блок выражений или операторов с другой стороны.
Описание слайда:
Лямбда-выражения Чтобы создать лямбда-выражение, необходимо указать входные параметры (если они есть) с левой стороны лямбда-оператора =>, и поместить блок выражений или операторов с другой стороны.

Слайд 24





Пример
Например, лямбда-выражение x => x * x задает параметр с именем x и возвращает квадрат значения x.
delegate int del(int i);
static void Main(string[] args)
{
	del myDelegate = x => x * x;
	int j = myDelegate(5); //j = 25
}
Описание слайда:
Пример Например, лямбда-выражение x => x * x задает параметр с именем x и возвращает квадрат значения x. delegate int del(int i); static void Main(string[] args) { del myDelegate = x => x * x; int j = myDelegate(5); //j = 25 }

Слайд 25





Еще пример
Возьмем наш делегат и сделаем от него лямбда-выражение
Описание слайда:
Еще пример Возьмем наш делегат и сделаем от него лямбда-выражение

Слайд 26





Шаблон
Лямбда-выражение с выражением с правой стороны оператора => называется выражением-лямбдой.
Выражения-лямбды возвращают результат выражения и принимают следующую основную форму.
(input parameters) => expression
Описание слайда:
Шаблон Лямбда-выражение с выражением с правой стороны оператора => называется выражением-лямбдой. Выражения-лямбды возвращают результат выражения и принимают следующую основную форму. (input parameters) => expression

Слайд 27





Скобки в выражении
Если лямбда имеет только один входной параметр, скобки можно не ставить, во всех остальных случаях они обязательны. Два и более входных параметра разделяются запятыми и заключаются в скобки:
(x, y) => x == y
Описание слайда:
Скобки в выражении Если лямбда имеет только один входной параметр, скобки можно не ставить, во всех остальных случаях они обязательны. Два и более входных параметра разделяются запятыми и заключаются в скобки: (x, y) => x == y

Слайд 28





Явное указание типов
Иногда компилятору бывает трудно или даже невозможно вывести типы входных параметров. В этом случае типы можно указать в явном виде, как показано в следующем примере.
(int x, string s) => s.Length > x
Описание слайда:
Явное указание типов Иногда компилятору бывает трудно или даже невозможно вывести типы входных параметров. В этом случае типы можно указать в явном виде, как показано в следующем примере. (int x, string s) => s.Length > x

Слайд 29





Пустые параметры
Отсутствие входных параметров задаётся пустыми скобками.
() => SomeMethod() 
Тело выражения-лямбды может состоять из вызова метода.
Описание слайда:
Пустые параметры Отсутствие входных параметров задаётся пустыми скобками. () => SomeMethod() Тело выражения-лямбды может состоять из вызова метода.

Слайд 30





Выражение
Лямбда операторов (или операторная лямбда) напоминает выражение-лямбду, за исключением того, что оператор (или операторы) заключается в фигурные скобки:
(input parameters) => {statement;}
Описание слайда:
Выражение Лямбда операторов (или операторная лямбда) напоминает выражение-лямбду, за исключением того, что оператор (или операторы) заключается в фигурные скобки: (input parameters) => {statement;}

Слайд 31





Пример
Изменим наш пример, добавим еще операцию в наше выражение
Описание слайда:
Пример Изменим наш пример, добавим еще операцию в наше выражение

Слайд 32





Особенности
Тело лямбды оператора может состоять из любого количества операторов;
Однако на практике обычно используется не более двух-трех.
Описание слайда:
Особенности Тело лямбды оператора может состоять из любого количества операторов; Однако на практике обычно используется не более двух-трех.

Слайд 33





Событийное программирование
Ситуация: вы получили права и хотите, чтобы все об этом знали. Что бы делали лет 5-10 тому назад?
Описание слайда:
Событийное программирование Ситуация: вы получили права и хотите, чтобы все об этом знали. Что бы делали лет 5-10 тому назад?

Слайд 34





Событийное программирование
Что делают сейчас?
Описание слайда:
Событийное программирование Что делают сейчас?

Слайд 35





Как это можно описать
1 Вариант: вам нужно иметь записную книжку с номерами всех тех, кого вы хотите оповестить о каком-то событии. И каждому нужно еще позвонить и сказать об этом.
Описание слайда:
Как это можно описать 1 Вариант: вам нужно иметь записную книжку с номерами всех тех, кого вы хотите оповестить о каком-то событии. И каждому нужно еще позвонить и сказать об этом.

Слайд 36





Как это можно описать
2 Вариант: вы просто «постите» новость в социальной сети и все, кто на вас «подписан» видят вашу новость.
Описание слайда:
Как это можно описать 2 Вариант: вы просто «постите» новость в социальной сети и все, кто на вас «подписан» видят вашу новость.

Слайд 37





Переведем на «программистский» язык
Ранее: мы должны были иметь объекты всех классов, кто должен знать об изменениях внутри класса и вызывать методы этих объектов.
А представьте, что появилось еще 2 класса, кто должны знать об оповещениях. Сколько кода прописать придется?
Описание слайда:
Переведем на «программистский» язык Ранее: мы должны были иметь объекты всех классов, кто должен знать об изменениях внутри класса и вызывать методы этих объектов. А представьте, что появилось еще 2 класса, кто должны знать об оповещениях. Сколько кода прописать придется?

Слайд 38





Переведем на «программистский» язык
Теперь: мы создаем поле-«событие» в нашем классе и метод, с помощью которого любой класс может «подписаться» на это событие. Далее, если в классе происходят изменения, просто вызывается это событие и все классы, кто на него подписаны реагируют на это.
Описание слайда:
Переведем на «программистский» язык Теперь: мы создаем поле-«событие» в нашем классе и метод, с помощью которого любой класс может «подписаться» на это событие. Далее, если в классе происходят изменения, просто вызывается это событие и все классы, кто на него подписаны реагируют на это.

Слайд 39





Переведем на «программистский» язык
«Изменением в классе» может быть любой вызываемый метод класса или событие.
«Реакция другого класса» это метод того класса, который будет вызываться при совершении события.
«Подписать на событие» это передать в поле-событие класса метод другого класса, который будет вызываться при наступлении события.
Описание слайда:
Переведем на «программистский» язык «Изменением в классе» может быть любой вызываемый метод класса или событие. «Реакция другого класса» это метод того класса, который будет вызываться при совершении события. «Подписать на событие» это передать в поле-событие класса метод другого класса, который будет вызываться при наступлении события.

Слайд 40





Как создавать
Чтобы создать событие нам понадобится делегат
public delegate void Del(string message);
Теперь в классе можем создать поле типа событие, используя ключевое слово event
private event Del event1;
Описание слайда:
Как создавать Чтобы создать событие нам понадобится делегат public delegate void Del(string message); Теперь в классе можем создать поле типа событие, используя ключевое слово event private event Del event1;

Слайд 41





Что такое событие
События это особый тип многоадресных делегатов, которые можно вызвать только из класса или структуры, в которой они объявлены (класс издателя).  
Если на событие подписаны другие классы или структуры, их методы обработчиков событий будут вызваны когда класс издателя инициирует событие.
Описание слайда:
Что такое событие События это особый тип многоадресных делегатов, которые можно вызвать только из класса или структуры, в которой они объявлены (класс издателя). Если на событие подписаны другие классы или структуры, их методы обработчиков событий будут вызваны когда класс издателя инициирует событие.

Слайд 42





Что такое событие
События позволяют классу или объекту уведомлять другие классы или объекты о возникновении каких-либо ситуаций. 
Класс, отправляющий (или порождающий) событие, называется издателем, а классы, принимающие (или обрабатывающие) событие, называются подписчиками.
Описание слайда:
Что такое событие События позволяют классу или объекту уведомлять другие классы или объекты о возникновении каких-либо ситуаций. Класс, отправляющий (или порождающий) событие, называется издателем, а классы, принимающие (или обрабатывающие) событие, называются подписчиками.

Слайд 43





Что такое событие
В C# в стандартном приложении Windows Forms или веб-приложении вы подписываетесь на события, вызываемые элементами управления, такими как кнопки и поля со списками.
Описание слайда:
Что такое событие В C# в стандартном приложении Windows Forms или веб-приложении вы подписываетесь на события, вызываемые элементами управления, такими как кнопки и поля со списками.

Слайд 44





Как создавать
Создать метод, с помощью которого на это событие можно будет подписаться.
public void AddToEvent(Del method)        {
            if(event1 == null)
                event1 = new Del(method);
            else
                event1 += method;       }
Описание слайда:
Как создавать Создать метод, с помощью которого на это событие можно будет подписаться. public void AddToEvent(Del method) { if(event1 == null) event1 = new Del(method); else event1 += method; }

Слайд 45





Как создавать
И метод, в котором событие будет вызываться.
 public void SomeMethod()        {
            //что-то происходит
            if(event1 != null)
            {
                event1("Что-то произошло");
            }
        }
Описание слайда:
Как создавать И метод, в котором событие будет вызываться. public void SomeMethod() { //что-то происходит if(event1 != null) { event1("Что-то произошло"); } }

Слайд 46





Пример
Как это может выглядеть наглядно
Описание слайда:
Пример Как это может выглядеть наглядно

Слайд 47





Как создавать
Все, что остается, это привязать метод одного класса к событию в этом классе через объекты классов.
Создадим другой класс.
Описание слайда:
Как создавать Все, что остается, это привязать метод одного класса к событию в этом классе через объекты классов. Создадим другой класс.

Слайд 48





Как создавать
Теперь связываем наши классы
Описание слайда:
Как создавать Теперь связываем наши классы

Слайд 49





События в C#
В C# в стандартном приложении Windows Forms или веб-приложении вы подписываетесь на события, вызываемые элементами управления, такими как кнопки и поля со списками и т.п. 
Описание слайда:
События в C# В C# в стандартном приложении Windows Forms или веб-приложении вы подписываетесь на события, вызываемые элементами управления, такими как кнопки и поля со списками и т.п. 

Слайд 50





Пример из лабораторной
Если посмотреть файл Form1 .Designer.cs
Описание слайда:
Пример из лабораторной Если посмотреть файл Form1 .Designer.cs

Слайд 51





Пример из лабораторной
Мы можем прямо в коде добавлять или удалять методы обработки от событий элементов формы.
Описание слайда:
Пример из лабораторной Мы можем прямо в коде добавлять или удалять методы обработки от событий элементов формы.



Похожие презентации
Mypresentation.ru
Загрузить презентацию