1、一个节拍器,每3秒发出一个事件,接收者听到后说“HEARD IT”,本事例说明了怎样创建和传递事件。把下面的代码复制到控制台程序即可。

using System;
namespace wildert
{
    public class Metronome
    {
        public event TickHandler Tick;
        public EventArgs e = null;
        public delegate void TickHandler(Metronome m, EventArgs e);
        public void Start()
        {
            while (true)
            {
                System.Threading.Thread.Sleep(3000);
                if (Tick != null)
                {
                    Tick(this, e);
                }
            }
        }
    }
        public class Listener
        {
            public void Subscribe(Metronome m)
            {
                m.Tick += new Metronome.TickHandler(HeardIt);
            }
            private void HeardIt(Metronome m, EventArgs e)
            {
                System.Console.WriteLine("HEARD IT");
            }

}
    class Test
    {
        static void Main ()
        {
            Metronome m = new Metronome();
            Listener l = new Listener();
            l.Subscribe(m);
    m.Start();
        }
    }
}

2、进一步说明怎样传递参数

using System;
namespace wildert
{
   
    public class TimeOfTick : EventArgs
    {
        private DateTime TimeNow;
        public DateTime Time
        {
            set
            {
                TimeNow = value;
            }
            get
            {
                return this.TimeNow;
            }
        }
    }
    public class Metronome
    {
        public event TickHandler Tick;
        public delegate void TickHandler(Metronome m, TimeOfTick e);
        public void Start()
        {
            while (true)
            {
                System.Threading.Thread.Sleep(3000);
                if (Tick != null)
                {
                    TimeOfTick TOT = new TimeOfTick();
                    TOT.Time = DateTime.Now;
                    Tick(this, TOT);
                }
            }
        }
    }
        public class Listener
        {
            public void Subscribe(Metronome m)
            {
                m.Tick += new Metronome.TickHandler(HeardIt);
            }
            private void HeardIt(Metronome m, TimeOfTick e)
            {
                System.Console.WriteLine("HEARD IT AT {0}",e.Time);
            }

}
    class Test
    {
        static void Main ()
        {
            Metronome m = new Metronome();
            Listener l = new Listener();
            l.Subscribe(m);
            m.Start();
        }
    }
}

最简单最明白的关于“事件”和“委托”的例子说明相关推荐

  1. 2、简单的onclick点击事件

    这篇文章讲的是简单的onclick点击事件,后面会有更详细与复杂的讲解与用法. 这个代码实现的效果就是一个简单的弹窗,点击一个按钮,弹出一个alert.看代码: <button onclick= ...

  2. 简单解析JavaScript的默认事件及如何阻止默认事件

    简单解析JavaScript的默认事件及如何阻止默认事件 上篇文章就提到,在JavaScript中提到事件冒泡两个必不可少也要提的就是事件捕获和默认事件,现在来聊一聊什么是默认事件,及如何阻止默认事件 ...

  3. C#事件与委托(详解)

    C#事件与委托详解[精华 多看看] Delegate delegate是C#中的一种类型,它 实际上是一个能够持有对某个方法的引用的类. 与其它的类不同,delegate类能够拥有一个签名(signa ...

  4. C#事件与委托详解【精华 多看看】--转载于https://www.cnblogs.com/sjqq/p/6917497.html

    Delegate delegate是C#中的一种类型,它实际上是一个能够持有对某个方法的引用的类.与其它的类不同,delegate类能够拥有一个签名(signature),并且它"只能持有与 ...

  5. 说说.net事件和委托。

        一说到.net的事件,也许你会想都说教程满天飞,一个被说烂了的东西还有什么可以说的啊?是啊,的确有很多好文章剖析事件,比如张子阳先生的C# 中的委托和事件 重温Observer模式--热水器· ...

  6. C#中的事件和委托(续)

    引言 如果你看过了 C#中的委托和事件 一文,我想你对委托和事件已经有了一个基本的认识.但那些远不是委托和事件的全部内容,还有很多的地方没有涉及.本文将讨论委托和事件一些更为细节的问题,包括一些大家常 ...

  7. 【转】C#事件和委托的理解

    知乎大佬多系列 作者:Junased 链接:https://www.zhihu.com/question/28932542/answer/42769044 来源:知乎 感觉官方说法可以搜索到,我就说理 ...

  8. C#事件-趣谈事件与委托

    事件与委托似乎很难以理解,这是因为它们的使用方式与常用的编码有很大的差别,例如通常编写的都是同步代码,调用一个类型的方法,会即刻出现方法执行的结果,这是符合逻辑的.但在某些情况中,同步代码未必满足需求 ...

  9. c语言sizeof char,sizeof 你真的弄明白了吗?来看看这个例子

    原标题:sizeof 你真的弄明白了吗?来看看这个例子 sizeof基础 在C语言中,sizeof是一个操作符(operator),而不是函数!其用于判断数据类型或者表达式长度(所占的内存字节数).其 ...

最新文章

  1. pytorch .item_pytorch + SGD
  2. 根据矩阵变化实现基于 HTML5 的 WebGL 3D 自动布局
  3. Office2019 Word 新建文档豆沙绿背景色失效零时解决方案
  4. Reddit如何使用Memcached来存储3TB的缓存数据--转
  5. 将query存进数组 php,thinkphp下通过QueryList获取网站指定数据并封装成数组,存入数据库...
  6. 网络爬虫框架cetty的实现
  7. LiveVideoStack音视频技术2018年度评奖揭晓
  8. oracle中dbms_并发和由于DBMS中的并发导致的问题
  9. webpack之font-awesome
  10. 【数字图像处理系列二】基本概念:亮度、对比度、饱和度、锐化、分辨率
  11. 16款私藏多年的PC端效率小软件推荐
  12. SQLAlchemy session 使用问题
  13. java课题研究方法和技术途径_开题报告中的拟采取的研究方法技术路线和技术关键...
  14. 如何给pdf添加目录
  15. 串口的原始模式和标准模式
  16. 百度为手游盛世添把火
  17. c语言数码管显示小数点,8位数码管显示正整数和小数及解决鬼影问题
  18. 《面试官不讲武德》对Java初级程序猿死命摩擦Http协议
  19. 竞品分析(淘宝、京东)
  20. OpenCV - 计算相机和视频的帧速率FPS

热门文章

  1. java crumb_vuex中,我在index.vue组件设置的值,为什么在另外一个组件crumb.vue获取不到...
  2. 注意力机制Effective Approaches to Attention-based Neural Machine Translation
  3. java检测ping延迟_批量ping IP并检测IP延迟率和丢包率脚本
  4. 关于第四次财富狂潮的思考,区块链如猛虎出笼?
  5. 【游戏程序设计】二维游戏示例-回合制Demo
  6. 【调剂】中科院上海微系统与信息技术研究所2023年高校联培项目招收调剂生的通知...
  7. 算法与数据结构学习资料及面试
  8. 日本房地产泡沫经验及其借鉴
  9. SSD:Single Shot MultiBox Detector解读
  10. 简单酷炫时尚设计开场视频模板剪辑素材