声明一个事宜:
在类的内部声明事宜,起首必需声明该事宜的托付范例。比方:
pulic delegate void MyDelegateHandler(object sender,EventArgs e);
然后基于上面的例子,再声明事宜,运用关键字 event
pulic event MyDelegateHandler MyEvent;
(object范例是一切类的基类,有关他的概况前面已说过了点击 object范例 进入相识,EventArgs 是包括事宜数据的类的基类,用于通报事宜的细节。)
写一个事宜实例:
每周的星期六我有一个雷打不动的习气,喜好去学校外面的一个超市买东西,那家超市有一个自动门,就是当我们走近肯定间隔(3米)的时刻会自动翻开,还会异常温顺与亲热的说“欢迎莅临”,由于我经常去他家买东西,办理了会员,所以每当我走近的时刻自动门彷佛熟习我,异常热忱的说“热烈欢迎HC666莅临本超市^_^”这个门却是挺好玩那
上面的例子中将“自动门”看做一个由Door实例化的对象,“我”是一个由person实例化的对象,当我挪用“去超市”的行动,而且间隔超市门口3米的时刻,触发我们定义的“Enterdoor”事宜,但是Enterdoor内里运用托付注册了一个“自动门(door)”的“开门(Opendoor)”行动,相当于挪用了开门要领,如许就达到了对象与对象之间的通讯与交换,代码以下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test { //定义一个person类,内里包括了要领 class person { public string name = "HC666"; private int distance; //声明托付 public delegate void EnterdoorHandler(object sender,EnterdoorArgs e); //基于托付声明事宜 public event EnterdoorHandler Enterdoor; //定义的一个去超市的要领,当间隔 distance<=3的时刻触发事宜 public void GotoStore() { for (int i = 6; i > 0; i--) { distance = i; if (i <= 3) {//触发事宜了 EnterdoorArgs e = new EnterdoorArgs(distance); OnEnterdoor(e);//挪用触发事宜要领 } } } public void OnEnterdoor(EnterdoorArgs e) {//挪用事宜里注册的要领 if (Enterdoor != null) Enterdoor(this, e); else Console.WriteLine("没有增加处置惩罚要领"); } //定义一个包括事宜数据的类,这里distance是一个推断的主要数据 public class EnterdoorArgs:EventArgs { public int distance; public EnterdoorArgs(int distance) { this.distance = distance; } } } //定义门这个类 class Door {//定义开门的要领 public void Opendoor(object sender, person.EnterdoorArgs e) { person per = (person)sender; //有点熟习吧,显现范例转换中有谈到 if (e.distance == 3) { Console.WriteLine("尊重的主顾您间隔本超市 {0}米 行将开门驱逐您", e.distance); } if(e.distance <3) Console.WriteLine("热烈欢迎 {0} 莅临本超市", per.name); } } class program { static void Main(string[] args) { person per = new person(); //实例化对象 Door door = new Door(); //向事宜中注册开门的要领 per.Enterdoor += door.Opendoor; //我去超市 per.GotoStore(); } } }
效果:
以上就是 C#进修日志24----事宜(event) 的内容,更多相关内容请关注ki4网(www.ki4.cn)!