源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C#事件用法实例浅析

  • 时间:2022-02-22 02:26 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#事件用法实例浅析
本文实例讲述了C#事件用法。分享给大家供大家参考。具体分析如下: EventHandler<TEventArgs>的定义如下 public delegate void EventHandler<TEventArgs>(object sender,TEventArgs e) where TEventArgs:EventArgs 第一个参数必须是object类型(是一个对象,包含事件的发送者) 第二个参数是T类型(即泛型),定义了一个T的约束,它必须派生自基类EventArgs CardInfoEventArgs 就派生自基类EventArgs 举例
#region 测试事件1
//EventArgs类
public class CardInfoEventArgs : EventArgs
{
public string Car { get; private set; }
public CardInfoEventArgs(string car)
{
  this.Car = car;
}
}
//触发事件的类
public class CarDealer
{
public event EventHandler<CardInfoEventArgs> NewCardInfo;
public void NewCar(string car)
{
  Console.WriteLine("CarDealer,new car{0}", car);
  //在触发事件之前,需要检查委托NewCardInfo是否不为空。
  //如果没有订阅处理程序,委托就是空
  if (NewCardInfo != null)
  {
 NewCardInfo(this, new CardInfoEventArgs(car));
  }
}
}
//处理事件的类
public class Consumer
{
private string name;
public Consumer(string name)
{
  this.name = name;
}
//处理事件的方法
public void NewCarIsHere(object sender, CardInfoEventArgs e)
{
  Console.WriteLine("{0}:car {1} is new", name, e.Car);
}
}
#endregion
private void button_测试事件1_Click(object sender, EventArgs e)
{
  CarDealer dealer = new CarDealer();
  Consumer michael = new Consumer("Michael");
  dealer.NewCardInfo += michael.NewCarIsHere; //订阅事件
  dealer.NewCar("宝马");
  Consumer nick = new Consumer("Nick");
  dealer.NewCardInfo += nick.NewCarIsHere; //订阅事件
  dealer.NewCar("奔驰");
  dealer.NewCardInfo -= michael.NewCarIsHere; //取消订阅事件
  dealer.NewCar("奥迪");
}
测试结果截图 [img]http://files.jb51.net/file_images/article/201505/2015516121242273.jpg?2015416121255[/img] 希望本文所述对大家的C#程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部