14.02.2017 Views

. Стиллмен, Дж. Грин - Изучаем C#, 2-е издание

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

дающи<strong>е</strong> и принимающи<strong>е</strong><br />

Сбязь м<strong>е</strong>)кду издат<strong>е</strong>лями и подписчиками<br />

Одним из самых сложных для понимания при изуч<strong>е</strong>нии событий явля<strong>е</strong>тся обстоят<strong>е</strong>льство, что и з д а ­<br />

т <strong>е</strong> л ь ( s e n d e r ) долж<strong>е</strong>н знать, како<strong>е</strong> событи<strong>е</strong> он иницииру<strong>е</strong>т, в том числ<strong>е</strong>, каки<strong>е</strong> аргум<strong>е</strong>нты он <strong>е</strong>му п<strong>е</strong>р<strong>е</strong>да<strong>е</strong>т.<br />

И п о д п и с ч и к (r e c e iv e r ) долж<strong>е</strong>н знать, какой тип возвраща<strong>е</strong>мого знач<strong>е</strong>ния и аргум<strong>е</strong>нты сл<strong>е</strong>ду<strong>е</strong>т<br />

использовать для м<strong>е</strong>тодов обработчика событий.<br />

Но связи м<strong>е</strong>жду издат<strong>е</strong>л<strong>е</strong>м и подписчиком н<strong>е</strong>т. Издат<strong>е</strong>ль иницииру<strong>е</strong>т событи<strong>е</strong> и <strong>е</strong>му вс<strong>е</strong> равно, кто на н<strong>е</strong>го<br />

подписан. А подписчику важно, что это за событи<strong>е</strong>, но вс<strong>е</strong> равно, какой объ<strong>е</strong>кт стал <strong>е</strong>го причиной. Получа<strong>е</strong>тся,<br />

что как издат<strong>е</strong>ль, так и подписчик сфокусированы на событии, но н<strong>е</strong> друг на друг<strong>е</strong>.<br />

“*Г н .й<br />

4 У<br />

Событи<strong>е</strong> BalllnPlay<br />

до/<br />

С в<br />

О бь<strong>е</strong>кт Ball н<strong>е</strong> долж<strong>е</strong>н им <strong>е</strong>т ь<br />

связи с объ<strong>е</strong>ктом Pitcher Ему<br />

вс<strong>е</strong> равно, объ<strong>е</strong>кты какого т ипа<br />

работ аю т с событи<strong>е</strong>м: Fan,<br />

Pitcher, Umpire и т. п.<br />

prtcV'®’<br />

«Мой народ хоч<strong>е</strong>т В ступить 6 к он такт с вашим народом».<br />

Вы зна<strong>е</strong>т<strong>е</strong>, что д<strong>е</strong>ла<strong>е</strong>т этот код:<br />

B a l l c u r r e n t B a ll;<br />

Он созда<strong>е</strong>т с с ы л о ч н у ю п <strong>е</strong> р <strong>е</strong> м <strong>е</strong> н н у ю на любой объ<strong>е</strong>кт B a ll.<br />

Эта п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нная мож<strong>е</strong>т указывать даж<strong>е</strong> на знач<strong>е</strong>ни<strong>е</strong> null.<br />

Событиям нужна такая ж<strong>е</strong> ссылка, но указывающая н<strong>е</strong> на объ<strong>е</strong>кт,<br />

а н а м <strong>е</strong> т о д . Событиям нужно отсл<strong>е</strong>живать список подписанных<br />

на них м<strong>е</strong>тодов. Как вы уж<strong>е</strong> вид<strong>е</strong>ли, эти м<strong>е</strong>тоды могут<br />

принадл<strong>е</strong>жать другим классам и даж<strong>е</strong> быть закрытыми. Как ж<strong>е</strong><br />

отсл<strong>е</strong>дить вс<strong>е</strong> обработчики событий, которы<strong>е</strong> будут вызываться?<br />

Для этого используются д <strong>е</strong> л <strong>е</strong> г а т ы (d e le g a te ).<br />

Д<strong>е</strong>-л<strong>е</strong>-гат, сущ.<br />

ч<strong>е</strong>лов<strong>е</strong>к, им<strong>е</strong>ющий<br />

полномочия пр<strong>е</strong>дставлять<br />

других, пр<strong>е</strong>зид<strong>е</strong>нт<br />

отправил д<strong>е</strong>л<strong>е</strong>гата<br />

на саммит.<br />

510 глава 11

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!