. Стиллмен, Дж. Грин - Изучаем 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