Содержание
- 2. Сегодня Делегаты Одиночные делегаты Цепочка делегатов Обобщенные делегаты Анонимные методы Лямбда выражения Замыкания Ковариантность и контрвариантность
- 3. Сегодня Делегаты Одиночные делегаты Цепочка делегатов Обобщенные делегаты Анонимные методы Лямбда выражения Замыкания Ковариантность и контрвариантность
- 4. Ссылки на функции Обратный вызов При работе с Win API С, С++ Вызов глобальных функций Вызов
- 5. Делегат Делегат – объект, безопасный в отношении типов, указывающий на метод Содержит: ссылку на объект ссылку
- 6. Работа с делегатами Объявить (описать) делегат Описать тип делегата, используя специальный синтаксис (описать класс) Создать экземпляр
- 7. Объявление типа делегата Синтаксис [attributes] [modifiers] delegate return-type type-name(args-list); похож на определения абстрактного метода, но это
- 8. За кулисами Пример: public delegate double ProcessResults(double x, double y); За кулисами (создается класс наследник от
- 9. Создание (экземпляра) делегата При создании требуется связать с вызываемым методом (передать в конструктор) Для метода экземпляра
- 10. Вызов делегата Как и вызов обычной функции, где в качестве вызываемой функции указывается экземпляр делегата double
- 11. Демонстрации Одиночный делегат
- 12. Работа с делегатами Объявить (описать) делегат Описать тип делегата, используя специальный синтаксис (описать класс) Создать экземпляр
- 13. Делегаты как параметры функции Делегаты можно использовать для передачи функций как параметров public delegate double RealFunc
- 14. Сегодня Делегаты Одиночные делегаты Цепочка делегатов Обобщенные делегаты Анонимные методы Лямбда выражения Замыкания Ковариантность и контрвариантность
- 15. Цепочка делегатов Позволяет, вызвав один делегат, последовательно вызвать несколько методов (с одинаковой сигнатурой) public abstract class
- 16. Класс Delegate public abstract class Delegate : ICloneable { public static Delegate Combine (params Delegate[] delegates);
- 17. Сокращение записи создания цепочки делегатов Использование операция сложения и вычитания +, -. Использование += и -=
- 18. Цепочка делегатов Вызов цепочки делегатов такой же (последовательно вызываются все методы в этой цепочке) double d
- 19. Демонстрации Цепочка делегатов
- 20. Сегодня Делегаты Одиночные делегаты Цепочка делегатов Обобщенные делегаты Анонимные методы Лямбда выражения Замыкания Ковариантность и контрвариантность
- 21. Обобщенный делегат Аналогично обобщенным методам Значение типа параметра указывается при создании экземпляра делегата (и только там)
- 22. Стандартные делегаты Уже описанные типы делегатов Делегаты принимающие параметры и ничего не возвращающие Action Action Action
- 23. Демонстрации Обобщенные и стандартные делегаты
- 24. Сегодня Делегаты Одиночные делегаты Цепочка делегатов Обобщенные делегаты Анонимные методы Лямбда выражения Замыкания Ковариантность и контрвариантность
- 25. Анонимные методы Обеспечивают более простой и компактный способ определения простых делегатов Позволяет создать тело метода делегата
- 26. Демонстрации Анонимные методы
- 27. Сегодня Делегаты Одиночные делегаты Цепочка делегатов Обобщенные делегаты Анонимные методы Лямбда выражения Замыкания Ковариантность и контрвариантность
- 28. Лямбда выражения Краткая запись анонимных делегатов Элементы функционального программирования Два вида записи: “Лямбда оператор” “Лямбда выражение”
- 29. Синтаксис лямбда выражений Лямбда оператор (если тела метода состоит из более одного оператора): (in_arg_list) => {method
- 30. Демонстрации Лямбда выражения
- 31. Сегодня Делегаты Одиночные делегаты Цепочка делегатов Обобщенные делегаты Анонимные методы Лямбда выражения Замыкания Ковариантность и контрвариантность
- 32. Замыкания Лямбда выражения и анонимные методы могут использовать внутри себя переменные окружения. int i = 5;
- 33. Демонстрации Замыкания
- 34. Сегодня Делегаты Одиночные делегаты Цепочка делегатов Обобщенные делегаты Анонимные методы Лямбда выражения Замыкания Ковариантность и контрвариантность
- 35. Понятия class People { Person GetPersons(); } class CoursePeople : People { Student GetPersons(); } Соблюдение
- 36. Ковариантность делегатов Ковариантность – приведение частного к общему В терминах ООП: Там где требуется базовый тип
- 37. Контрвариантность делегатов Контрвариантность – приведение общего к частному В терминах ООП: Там где требуется тип можно
- 38. Ковариантность и контрвариантность интерфейсов out - обозначение ковариантного типа-параметра. Тип, обозначенный как out, может присутствовать только
- 39. Демонстрации Ковариантность и контрвариантность
- 40. Сегодня Делегаты Одиночные делегаты Цепочка делегатов Обобщенные делегаты Анонимные методы Лямбда выражения Замыкания Ковариантность и контрвариантность
- 41. Пример class Car { public delegate void PetrolIsOver(string message); public PetrolIsOver PetrolIsOverCallBack; const float lPer100 =
- 42. Демонстрации Недостаток public переменной-экземпляра делегата
- 43. События Событие – некоторая программная конструкция, которая упрощает создание делегатов и методов работы с ним, служащая
- 44. Объявление события [attributes] [modifiers] event delegate-type event-name [ { add { accessor-body } remove { accessor-body
- 45. Изнутри и снаружи Изнутри Событие – свойство-делегат, с которым можно обращаться точно так же Вызов делегата
- 46. Демонстрации События Частное событие
- 47. Соглашения о событиях Тип делегата-события: delegate void EventHandler(object sender, EventArgs e); delegate void EventHandler (object sender,
- 48. Демонстрации События Стандартные делегаты
- 50. Скачать презентацию