阅读背景:

一个例子帮你搞懂C#语言高级特性系列(02) --- 委托、事件和Lambda表达式

来源:互联网 

直接看例子吧:

using System;
using System.Windows.Forms;
using System.Threading;

namespace Com.LoonStudio.Example {

    public class Car {
        // 定义一个汽车事件的委托
        public delegate void CarEventHandler(string msg);

        // 定义加速事件
        public event CarEventHandler OnAccelerate;
        // 定义爆炸事件
        public event CarEventHandler OnExpose;

        public int Speed { set; get; }      // 速度
        public bool Broken { set; get; }    // 是否损坏

        public Car() {
            Speed = 20;
            Broken = false;
        }

        public void Run() {
            while(!Broken) {
                Speed += 20;
                if (Speed > 120) {
                    Broken = true;
                    if (OnExpose != null) {     // 引发爆炸事件
                        OnExpose("坏瓜了, 搞毛线了...");    
                    }
                }
                else {
                    if (OnAccelerate != null) { // 引发加速事件
                        OnAccelerate(string.Format("正在加速, 目前时速{0}km/h", Speed));
                    }
                }
            }
        }

    }

    class Program {
        static void Main(string[] args) {
            Car car = new Car();
            car.OnAccelerate += msg => { Console.WriteLine(msg); }; // Lambda表达式
            car.OnExpose += new Car.CarEventHandler(Program.Foo);   // 事件委托
            car.OnAccelerate += delegate(string msg) { Thread.Sleep(1000); };   // 匿名方法
            car.Run();
        }

        private static void Foo(string msg) {
            MessageBox.Show(msg, "呕耶", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
}
using System;
using System.Windows



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: