Студопедия — Делегаты. Общие сведения
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Делегаты. Общие сведения






Делегат – это специальный объект, который «указывает» на метод или несколько методов. Эти методы могут быть вызваны позднее посредством делегата.

Делегат должен иметь точно такой же синтаксис, что и метод при объявлении (то есть возвращать или не возвращать то же значение, что и метод и принимать или не принимать те же самые параметры).

Работа с делегатом очень схожа с работой с классом.

· Для того, чтобы делегат указал на статический метод (при чем метод объявлен в классе, в котором вызывается делегат), то мы просто создаем объект делегата и в скобках указываем название метода:

· Для того, чтобы делегат указал на нестатический метод (при чем метод объявлен вне класса, в котором вызывается делегат), то мы сначала создаем объект этого другого класса, потом объект делегата и в скобках обращаемся к методу через объект класса (имя объекта, точка, название метода):

Пример для чего используются делегаты (к примеру для быстрого и удобного переключения между методами).

Расход бензина на определенное расстояние, алгоритм создания:

1. Создаем класс Car, специальный конструктор (параметры: модель машини, уровень бензина в баке, расход на 100 км), метод (параметр: дистанция), который подсичтает, сколько осталось в баке.

2. Создаем второй класс, создаем 2 метода (параметры: уровень топлива в баке, расход на 1 км, дистанция).

3. Объявляем делегат в классе Car, в конструкторе инициализируем его, в методе Drive используем уже не другой метод, а делегат. И соответственно меняется реализация в основном методе Main.

1. Для начала создадим класс, в котором есть специальный конструктор (задает название машины, уровень бензина, расход на 100 км) и метод (пользователь задает дистанцию, метод подсчитывает, сможет ли проехать машина).

2. Теперь добавим класс в нашу программу, в котором будут 2 метода, которые подсчитывает остаток топлива в баке в нормальную и ветреннюю погоду (результат не поменяется):

3. Объявляем делегат в классе Car, в конструкторе инициализируем его, в методе Drive используем уже не другой метод, а делегат. И соответственно меняется реализация в основном методе Main.

Можно не в конструкторе, а в методе использовать делегат:

Итог: Делегаты могут использоваться в ситуации, когда есть 1 метод одного класса, 2 метода (с одинаковыми параметрами и возвращаемым значением) другого класса. Мы можем создать в первом классе делегат, который указывает на эти 2 метода. Тогда добавив этот делегат в качестве параметра в метод первого класса, мы сможем, при вызове этого метода в основной функции Main, указать в скобках, какой из двух методов использовать.

Делегат может указывать на несколько методов одновременно. То есть при вызове делегата будут выполняться сразу все методы, на которые он указывает. Такая особенность реализуется следующим образом:

Важно: Если мы возвращаем какое-либо значение в каждом из методов, то в итоге вернется значение последнего метода, использованого в Main.







Дата добавления: 2015-06-12; просмотров: 442. Нарушение авторских прав; Мы поможем в написании вашей работы!



Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

Различия в философии античности, средневековья и Возрождения ♦Венцом античной философии было: Единое Благо, Мировой Ум, Мировая Душа, Космос...

Характерные черты немецкой классической философии 1. Особое понимание роли философии в истории человечества, в развитии мировой культуры. Классические немецкие философы полагали, что философия призвана быть критической совестью культуры, «душой» культуры. 2. Исследовались не только человеческая...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит...

Дренирование желчных протоков Показаниями к дренированию желчных протоков являются декомпрессия на фоне внутрипротоковой гипертензии, интраоперационная холангиография, контроль за динамикой восстановления пассажа желчи в 12-перстную кишку...

Деятельность сестер милосердия общин Красного Креста ярко проявилась в период Тритоны – интервалы, в которых содержится три тона. К тритонам относятся увеличенная кварта (ув.4) и уменьшенная квинта (ум.5). Их можно построить на ступенях натурального и гармонического мажора и минора.  ...

Понятие о синдроме нарушения бронхиальной проходимости и его клинические проявления Синдром нарушения бронхиальной проходимости (бронхообструктивный синдром) – это патологическое состояние...

Studopedia.info - Студопедия - 2014-2024 год . (0.013 сек.) русская версия | украинская версия