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>ни<strong>е</strong> упражн<strong>е</strong>ния<br />

la’w u e u M o<br />

1с1ЖН<strong>е</strong>пп<strong>е</strong><br />

<strong>е</strong>ш<strong>е</strong>ни<strong>е</strong><br />

вы глядит код с написанны м и классам и Ball и Pitcher и добавл <strong>е</strong>нны м<br />

классом Fan.<br />

c l a s s B a l l<br />

{<br />

}<br />

public event EventHandler BalllnPlay;<br />

public void OnBalllnPlay(BallEventArgs e) {<br />

EventHandler balllnPlay = BalllnPlay;<br />

if (balllnPlay 1= null)<br />

balllnPlay(this, e)<br />

В кач<strong>е</strong>ств<strong>е</strong> аргу- c l a s s B a llE v e n t A r g s : E v e n tA r g s<br />

м<strong>е</strong>нтов события (<br />

пр<strong>е</strong>красно подходят<br />

авт омат и­<br />

ч<strong>е</strong>ски добавля<strong>е</strong>мы<strong>е</strong><br />

пр<strong>е</strong>дназнач<strong>е</strong>нны<strong>е</strong><br />

только для чт <strong>е</strong>­<br />

ния свойства.<br />

В<strong>е</strong>дь обработчики<br />

событий только<br />

читают п<strong>е</strong>р<strong>е</strong>дава<strong>е</strong>мый<br />

им данны<strong>е</strong>. }<br />

public int Trajectory { get; private set; }<br />

public int Distance { get; private set; }<br />

public BallEventArgs(int trajectory, int distance)<br />

c l a s s Fan {<br />

this.Trajectory = trajectory;<br />

this.Distance = distance;<br />

public Fan(Ball ball!<br />

М<strong>е</strong>тод ОпВаШпР1ау() вызыва<strong>е</strong>т<br />

событи<strong>е</strong> ВаШпР(аи. Н<strong>е</strong><br />

забудьт<strong>е</strong> пров<strong>е</strong>рить, н<strong>е</strong> равно<br />

ли <strong>е</strong>го знач<strong>е</strong>ни<strong>е</strong> пиЦ инач<strong>е</strong> он<br />

стан<strong>е</strong>т причиной исключ<strong>е</strong>ния<br />

Конструктор объ<strong>е</strong>кта<br />

Fan привязыва<strong>е</strong>т свой<br />

обработчик события<br />

к событию BalllnPlay.<br />

ball.BalllnPlay += new EventHandler(ball_BallInPlay);<br />

Обработчик собы- void ball_BallInPlay(object sender, EventArgs e)<br />

тия BaJllnPlay клас- {<br />

ca fan высматрива if (e is BallEventArgs) {<br />

em высоко л<strong>е</strong>тящи<strong>е</strong><br />

мячи, брош<strong>е</strong>нны<strong>е</strong><br />

BallEventArgs ballEventArgs = e as BallEventArgs;<br />

на слишком длинную<br />

if (ballEventArgs.Distance > 400 && ballEventArgs.Trajectory > 30)<br />

дистанцию.<br />

Console.WriteLine("Fan: Home run! I'm going for the ball!");<br />

else<br />

}<br />

}<br />

Console.WriteLine("Fan: Woo-hoo! Yeah!");<br />

504 глава 11

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

Saved successfully!

Ooh no, something went wrong!