C#事件用法实例浅析
程序员文章站
2022-08-03 20:50:54
本文实例讲述了c#事件用法。分享给大家供大家参考。具体分析如下:
eventhandler的定义如下
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#程序设计有所帮助。
下一篇: C#可空类型用法分析