博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
委托和事件
阅读量:5173 次
发布时间:2019-06-13

本文共 2355 字,大约阅读时间需要 7 分钟。

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{    ///     /// 丁原事件触发者    ///    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

转载于:https://www.cnblogs.com/tylertang/p/4210977.html

你可能感兴趣的文章
CLR:基元类型、引用类型和值类型
查看>>
dubbo序列化hibernate.LazyInitializationException could not initialize proxy - no Session懒加载异常的解决...
查看>>
jQuery中的事件绑定的几种方式
查看>>
泥塑课
查看>>
setImageBitmap和setImageResource
查看>>
springMVC4 注解配置实例
查看>>
单片机编程
查看>>
Filter in Servlet
查看>>
Linux--SquashFS
查看>>
Application Pool Identities
查看>>
2017-3-24 开通博客园
查看>>
【MySQL性能优化】MySQL常见SQL错误用法
查看>>
Vue2全家桶之一:vue-cli(vue脚手架)超详细教程
查看>>
Struts 2 常用技术
查看>>
树形DP
查看>>
python flask解决上传下载的问题
查看>>
语法测试
查看>>
CES1
查看>>
CES2
查看>>
文件方式实现完整的英文词频统计实例
查看>>