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

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

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






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

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

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

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

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

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

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

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; просмотров: 451. Нарушение авторских прав; Мы поможем в написании вашей работы!



Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

ТРАНСПОРТНАЯ ИММОБИЛИЗАЦИЯ   Под транспортной иммобилизацией понимают мероприятия, направленные на обеспечение покоя в поврежденном участке тела и близлежащих к нему суставах на период перевозки пострадавшего в лечебное учреждение...

Кишечный шов (Ламбера, Альберта, Шмидена, Матешука) Кишечный шов– это способ соединения кишечной стенки. В основе кишечного шва лежит принцип футлярного строения кишечной стенки...

Принципы резекции желудка по типу Бильрот 1, Бильрот 2; операция Гофмейстера-Финстерера. Гастрэктомия Резекция желудка – удаление части желудка: а) дистальная – удаляют 2/3 желудка б) проксимальная – удаляют 95% желудка. Показания...

Экспертная оценка как метод психологического исследования Экспертная оценка – диагностический метод измерения, с помощью которого качественные особенности психических явлений получают свое числовое выражение в форме количественных оценок...

В теории государства и права выделяют два пути возникновения государства: восточный и западный Восточный путь возникновения государства представляет собой плавный переход, перерастание первобытного общества в государство...

Закон Гука при растяжении и сжатии   Напряжения и деформации при растяжении и сжатии связаны между собой зависимостью, которая называется законом Гука, по имени установившего этот закон английского физика Роберта Гука в 1678 году...

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