Пример #1
0
 // 事件通常為公用的,因此標示為 public
 // event 為關鍵字,一般 delegate 可為區域變數或成員變數,delegate 呼叫前若未指定任何方法,則會造成編譯錯誤,且第一次指定方法不可使用「+=」
 // 標示為 event 者僅能是成員變數,呼叫前若未指定任何方法,則僅在執行期間拋出例外,並且第一次指定方法可使用「+=」
 // EventHandler 則為 delegate 定義:  public delegate void EventHandler(object sender, EventArgs e);
 public void OnBallInPlay(BallEventArgs e)
 {
     if (BallInPlay != null)
     {
         BallInPlay(this, e);
     }
 }
Пример #2
0
        static void Main(string[] args)
        {
            var e    = new BallEventArgs(trajectory: 20, distance: 200);
            var ball = new Ball();
            var p    = new Pitcher(ball);
            var fans = new Fans(ball);

            ball.OnBallInPlay(e);
            Console.ReadLine();
        }
Пример #3
0
        private void ball_BallInPlay(object sender, EventArgs e)
        {
            // BallInPlay 事件處理方法

            if (e is BallEventArgs)
            {
                // 判斷物件是否為 BallEventArgs 實體
                BallEventArgs ballEventArgs = e as BallEventArgs;  // 將物件由 EventArgs 轉型 BallEventArgs

                if ((ballEventArgs.Distance < 95) && (ballEventArgs.Trajectory < 60))
                {
                    CatchBall();
                }
                else
                {
                    CoverFirstBase();
                }
            }
        }