直接看例子吧:
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