. Стиллмен, Дж. Грин - Изучаем 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> бм<strong>е</strong>ст<strong>е</strong><br />
EventArgs<br />
Т<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 />
EventArgs.<br />
^ Нам нуж<strong>е</strong>н объ<strong>е</strong>кт для аргум<strong>е</strong>нтов события<br />
Помнит<strong>е</strong>, что событи<strong>е</strong> BalllnPlay им<strong>е</strong><strong>е</strong>т н<strong>е</strong>сколько аргум<strong>е</strong>нтов?<br />
Для них нам потр<strong>е</strong>бу<strong>е</strong>тся объ<strong>е</strong>кт. В .NET для<br />
этой ц<strong>е</strong>ли сущ<strong>е</strong>ству<strong>е</strong>т стандартный класс E v e n t A r g s , но<br />
он н <strong>е</strong> и м <strong>е</strong> <strong>е</strong> т ч л <strong>е</strong> н о в . Он пр<strong>е</strong>дназнач<strong>е</strong>н исключит<strong>е</strong>льно<br />
для п<strong>е</strong>р<strong>е</strong>дачи аргум<strong>е</strong>нтов объ<strong>е</strong>кта обработчикам события.<br />
Вот объявл<strong>е</strong>ни<strong>е</strong> этого класса:<br />
class BallEventArgs : EventArgs<br />
Это означа<strong>е</strong>т возможность<br />
восходящ<strong>е</strong>го<br />
прив<strong>е</strong>д<strong>е</strong>ния<br />
объ<strong>е</strong>кта EventArgs<br />
в случа<strong>е</strong>, когда <strong>е</strong>го<br />
нужно п<strong>е</strong>р<strong>е</strong>слать<br />
событию, н<strong>е</strong> ум <strong>е</strong>-<br />
ющ<strong>е</strong>му <strong>е</strong>го обрабатывать.<br />
Эти свойства позвомячу<br />
п<strong>е</strong>р<strong>е</strong>дать<br />
обработчикам событий<br />
информацию о м<strong>е</strong>ст<strong>е</strong><br />
вброса в игру.<br />
BallEventArgs<br />
Trajectory<br />
Distance<br />
Нужно объявить событи<strong>е</strong> внутри вызвавш<strong>е</strong>го <strong>е</strong>го класса<br />
В класс<strong>е</strong> Ball присутству<strong>е</strong>т строчка с к л ю ч <strong>е</strong> в ы м с л о в о м e v e n t . Она мож<strong>е</strong>т располагаться в произвольном<br />
м<strong>е</strong>ст<strong>е</strong> класса, обычно <strong>е</strong><strong>е</strong> пом<strong>е</strong>щают рядом с объявл<strong>е</strong>ни<strong>е</strong>м свойств. Благодаря этому други<strong>е</strong><br />
объ<strong>е</strong>кты могут подписываться на событи<strong>е</strong>. Вот как это выглядит:<br />
p u b lic e ve n t E v e n tH a n d le r B a l l l n P l a y ;<br />
Дост уп к событиям обыч- \<br />
но открыт. Наш<strong>е</strong> событи<strong>е</strong> \<br />
опр<strong>е</strong>д<strong>е</strong>л<strong>е</strong>но в класс<strong>е</strong> Ball, но<br />
нужно, чтобы на н<strong>е</strong>го могли<br />
ссылаться объ<strong>е</strong>кты Pitcher,<br />
Umpire и т. п. Если вы хот<br />
ит <strong>е</strong> ограничить доступ<br />
к событию экз<strong>е</strong>мплярами<br />
из <strong>е</strong>го класса, событи<strong>е</strong> можно<br />
закрыть.<br />
посл<strong>е</strong> ключ<strong>е</strong>вого слова event клю -<br />
f w T r ссылка на объ<strong>е</strong>кт, вызвав-<br />
E v e n tfr g r " ^<br />
496 глава 11