当前位置: 移动技术网 > IT编程>开发语言>c# > C#事件用法实例浅析

C#事件用法实例浅析

2019年07月18日  | 移动技术网IT编程  | 我要评论
本文实例讲述了c#事件用法。分享给大家供大家参考。具体分析如下: eventhandler<teventargs>的定义如下 public delegate

本文实例讲述了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("奥迪");
}

测试结果截图

希望本文所述对大家的c#程序设计有所帮助。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网