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> бм<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

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

Saved successfully!

Ooh no, something went wrong!