首页 > 代码库 > 事件的使用

事件的使用

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");
}

事件的使用