Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Shporka EK.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.38 Mб
Скачать
  1. Делегати.

Делегат - клас, в якому зберігається функція. В визначення делегата входить прототип функцій, які можуть бути представлені цим делегатом. При оголошенні змінної типу делегата вказується функція, тип якої сумісний з типом делегата. Після цього делегат можна використовувати для виклику зазначеної функції. Зазвичай делегати використовуються для реалізації зворотних викликів. Зворотний виклик, виклик функції A функції B, переданої в якості параметра функції A. Зворотні виклики часто застосовуються для передачі функції інформації про вироблених її діях.

Оголошення делегата може розташовуватися всередині або поза будь-якого класу і схоже на оголошення функції, але з додаванням до початку ключового слова delegate. Для оголошення делегата використовується наступний синтаксис:

delegate тип делегат(аргументи);

Можливість оголошення делегата поза будь-якого класу пов'язана з тим, що на основі рядка оголошення делегата компілятор фактичні генерує оголошення класу, похідного від MulticastDelegate.

Для створення делегата необхідно визначити змінну типу делегата і за допомогою ключового слова new викликати конструктор делегата, передавши йому в якості параметра ім'я функції, яка зберігатиметься в делегате.

делегат змінна=new делегат(объект.метод);

Для виклику делегата вказується ім'я змінної типу делегата, а потім у круглих дужках перераховуються через кому параметри, які слід передати функції, що викликається через об'єкт делегата.

  1. Події.

Подія являє собою автоматичне повідомлення про те, що відбулася деяка дія. Події діють за наступним принципом: об'єкт, виявляє інтерес до події, реєструє обробник цієї події. Коли ж подія відбувається, викликаються всі зареєстровані обробника цієї події. Обробники подій зазвичай представлені делегатами.

Події є членами класу та оголошуються за допомогою ключового слова event. Найчастіше для цієї мети використовується наступна форма:

event делегат_события имя_события;

де делегат_события позначає ім'я делегата, використовуваного для підтримки події, а имя_события - конкретний об'єкт объявляемого події.

Події засновані на делегатах і надають їм механізм публікації/підписки. У каркасі .NET події присутні всюди. В додатках Windows клас Button підтримує подія Click. Цей тип події є делегатом. Метод-обробник, що викликається з подією Click, повинен бути визначений з параметрами, заданими в типі делегата.

Як і делегати, події підтримують групову адресацію. Це дає можливість кільком об'єктам реагувати на повідомлення про подію.

Методи примірника і статичні методи можуть бути використані в якості обробників подій, але між ними є одна істотна відмінність. Коли статичний метод використовується в якості обробника, повідомлення про подію поширюється на весь клас. А коли в якості обробника використовується метод примірника, то події адресуються конкретним екземплярів об'єктів. Отже, кожен об'єкт певного класу, до якого потрібно отримати повідомлення про подію, повинен бути зареєстрований окремо.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]