首页 > 代码库 > 委托和事件
委托和事件
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DelegateAndEvent{ public class Caculator { //dim a CaculateEventArgs,used to save the status info when call the event public class CaculateEventArgs : EventArgs { public readonly int x, y; public CaculateEventArgs(int x, int y) { this.x = x; this.y = y; } } //dim the event delegate public delegate void CalculateEventHandler(object sender,CaculateEventArgs e); //dim the event public event CalculateEventHandler MyCalculate; //support the virtual function //提供受保护的虚方法,可以由子类覆写来拒绝监视 protected virtual void OnCalculate(CaculateEventArgs e) { if(MyCalculate!=null) { MyCalculate(this, e); } } //进行计算,调用该发放表示有新的计算发生 public void Calculate(int x,int y) { CaculateEventArgs e = new CaculateEventArgs(x,y ); //通知所有的事件注册者 OnCalculate(e); } }}
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DelegateAndEvent{ /// <summary> /// 丁原事件触发者 /// </summary> public class CaculatorManager { public void Add(object sender,Caculator.CaculateEventArgs e) { Console.WriteLine(e.x+e.y ); } public void Substract(object sender,Caculator.CaculateEventArgs e) { Console.WriteLine(e.x-e.y); } }}
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DelegateAndEvent{ class Program { static void Main(string[] args) { Caculator calculator = new Caculator(); //事件触发者 CaculatorManager cm = new CaculatorManager(); //事件绑定 calculator.MyCalculate += cm.Add; calculator.Calculate(100,200); calculator.MyCalculate += cm.Substract; calculator.Calculate(100,200); //事件注销 calculator.MyCalculate -= cm.Add; calculator.Calculate(100,200); Console.Read(); } }}
输出:
300
300
-100
-100
委托和事件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。