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

Что объединяет события, делегаты и свойства

Читайте также:
  1. B. группа: веществ с общими токсическими и физико-химическими свойствами.
  2. B. метода разделения смеси веществ, основанный на различных дистрибутивных свойствах различных веществ между двумя фазами — твердой и газовой
  3. I. ТЕРМОДИНАМИЧЕСКИЕ СВОЙСТВА ВОДЫ И ВОДЯНОГО ПАРА
  4. Q.3. Магнитные свойства кристаллов.
  5. XI. ПРИСПОСОБЛЕНИЕ И ДРУГИЕ ЭЛЕМЕНТЫ, СВОЙСТВА. СПОСОБНОСТИ И ДАРОВАНИЯ АРТИСТА
  6. А. Общие химические свойства пиррола, фурана и тиофена
  7. А. ОСНОВНЫЕ СВОЙСТВА КОРРЕКЦИЙ
  8. Аминокислоты винограда и вина. Состав, свойства аминокислот.
  9. Анализ издержек начинается с построения их классификаций, которые помогут получить комплексное представление о свойствах и основных характеристиках.
  10. Арифметическая середина и ее свойства
  11. Б) не обладающие физическими свойствами, но приносящие постоянно или длительное время доход
  12. Б. Специфические химические свойства пиррола

Весь изложенный материал говорит о некоторой схожести между событием и делегатом, между делегируемой функцией и обработчиком. Сравним событие с делегатом. Допустим, что выполняется некоторое событие (вызывается одиночный объект делегата) и на него реагирует соответствующий обработчик (выполняется представляемая объектом делегата функция). Другими словами, когда возникает некоторое событие, то вызывается множественный объект делегата и представленные им функции-обработчики реагируют на данное событие. С этой точки зрения смысловое назначение действий, выполняемых в результате возникновения события, во многом совпадает со смысловым назначением действий при использовании делегата. И действительно, событие является можно рассматривать как частный случай делегата. А чем отличается событие от делегата? Дело в том что, если посмотреть на объявление события более внимательно, то можно легко заметить, что слово event существенно изменило употребление делегата в качестве события. Это изменение заключается в том, что волшебное слово event заставляет компилятор внести в код нечто, что делает событие отличным от делегата. В результате объект-делегата, превращённый в объект-событие, уже можно вызвать только внутри того экземпляра класса, в котором этот делегат-событие был объявлен.

Таким образом событие становится принадлежностью конкретного объекта. А событие, возникающее внутри такого объекта "отсылается" к другим объектам, которые реагируют на пришедшее к ним событие с помощью своих обработчиков, связанных именно с тем объектом, в котором это событие возникло.

Здесь важно отметить тот факт, что поскольку событие связано с определённым объектом, то и обработчики других объектов тесно связаны с этим конкретным событием и соответственно - с его объектом. То есть имеет место жесткая фиксация связи между событием и теми обработчиками, которые должны выполняться при генерировании этого события.

Также как и в случае делегата, прежде чем объявлять событие, необходимо объявить делегат события. Делегат события определяет формат функции - обработчика события. Подписавшиеся на событие обработчики всех его подписчиков должна соответствовать этому формату, то есть иметь один и тот же список типов параметров и тип возвращаемого значения. Делегат события может быть объявлен вне класса объекта, если он требуется для классов других объектов или используется самостоятельно. Но можно объявить делегат события и в классе объекта, в котором будет генерироваться событие. Если событие важно и часто используется многими программистами, то для него создают свой собственный делегат и класс для объекта данных этого события. Например, для широко используемого события OnMouseDown нажатия на клавишу мыши создан делегат MouseEventHandler и класс MouseEventArgs для данных.

Давайте сравним объявление свойства, делегата и события


1 | 2 | 3 | 4 | 5 | 6 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)