首页 > 代码库 > 事件的使用
事件的使用
1.定义事件参数
public class CarInfoEventArgs:EventArgs
{
public string Car{get;private set;}
public CarInfoEventArgs(string car){Car=car;}
}
2.事件源
public class CarDealer
{
public event EventHandler<CarInfoEventArgs> NewCarInfo;
public void NewCar(string car)
{
Console.WriteLine("CarDealer,new car {0}",car);
RaiseNewCarInfo(car);
}
public void RaiseNewCarInfo(string car)
{
var newCarInfo=NewCarInfo;
if(newCarInfo!=null)
{
newCarInfo(this,new CarInfoEventArgs(car));
}
}
}
3.订阅者
public class Consumer
{
public string Name{get;private set}
public Consumer(string name){Name=name;}
public void NewCarIsHere(object sender,CarInfoEventArgs e)
{
Console.WriteLine("{0}: car {1} is new",name,e.Car);
}
}
4.调用
static void Main()
{
var dealer=new CarDealer();
var michael=new Consumer("Michael");
dealer.NewCarInfo+=michael.NewCarIsHere;
dealer.NewCar("Ferrari");
var sebastian=new Consumer("Sebastian");
dealer.NewCarInfo+=sebastian.NewCarIsHere;
dealer.NewCar("Mercedes");
dealer.NewCarInfo-=michael.NewCarIsHere;
dealer.NewCar("Red Bull Racing");
}
事件的使用