首页 > 编程语言 >C#事件简述

C#事件简述

时间:2024-04-08 16:02:43浏览次数:9  
标签:Console WriteLine 委托 C# void 简述 事件 闹钟 public

C#事件简述

有人说事件就是特殊的多播委托,有人说不是,仁者见仁智者见智,用起来是差不多的。

1、首先声明一个委托

public delegate void 一个示例委托();
这个委托一般就是一个归类作用,基于这个委托我可以创建很多个同类型(返回值相同、参数值类型相同,业务逻辑类似)的事件,例如:
namespace System.Windows.Forms
{
    public delegate void KeyEventHandler(object sender, KeyEventArgs e);
}

namespace System.Windows.Forms
{
    public delegate void MouseEventHandler(object sender, MouseEventArgs e);
}
这两个都是官方定义的委托,一个用于鼠标事件,一个用于键盘事件。

2、创建一个类,并根据类创建一个事件

    internal class 闹钟
    {
        public event 一个示例委托 闹钟响了;

3、创建这个事件的触发方法

  public void 到七点了() 
  {
      闹钟响了();
  }

4、创建另一个受到闹钟响了影响到的类,并实现具体动作

internal class 打工人
{
    public void 起床() 
    {
        Console.WriteLine("让我再睡五分钟");
    }

    public void 吃早餐()
    {
        Console.WriteLine("早餐越来越不好吃了");
    }

    public void 开始打工()
    {
        Console.WriteLine("开始摸鱼");
    }
}

5、根据实际关系,串联起两个类

            闹钟 a = new 闹钟();
            打工人 b = new 打工人();

            a.闹钟响了 += b.起床;
            a.闹钟响了 += b.吃早餐;
            a.闹钟响了 += b.开始打工;

6、触发

a.到七点了();

7、运行结果
在这里插入图片描述
PS:本人为理解方便类名、方法名用了汉语,读者别学我哦,代码规范还是很重要的。

8、全部代码
闹钟类和委托

    public delegate void 一个示例委托();

    internal class 闹钟
    {
        public event 一个示例委托 闹钟响了;

        public void 到七点了() 
        {
            闹钟响了();
        }
    }
打工人类
  internal class 打工人
  {
      public void 起床() 
      {
          Console.WriteLine("让我再睡五分钟");
      }

      public void 吃早餐()
      {
          Console.WriteLine("早餐越来越不好吃了");
      }

      public void 开始打工()
      {
          Console.WriteLine("开始摸鱼");
      }
  }

主函数

   static void Main(string[] args)
   {
       闹钟 a = new 闹钟();
       打工人 b = new 打工人();

       a.闹钟响了 += b.起床;
       a.闹钟响了 += b.吃早餐;
       a.闹钟响了 += b.开始打工;

       a.到七点了();
   }

标签:Console,WriteLine,委托,C#,void,简述,事件,闹钟,public
From: https://blog.csdn.net/weixin_45903369/article/details/137511742

相关文章

  • 【Spring高级】SpringMVC中控制器方法HandlerMethod的工作流程
    目录流程图演示流程图先分3个部分来看下整体的流程图图1ServletInvocableHandlerMethod是SpringFramework中对HandlerMethod的实现。ServletInvocableHandlerMethod的整体架构图......
  • 并发工具类:ExecutorService、Future、CountDownLatch与Semaphore(第一章)
    目录一、引言ExecutorService与Future:优雅的任务提交与结果获取CountDownLatch:精确的线程同步点Semaphore:资源访问的流量控制器总结二、ExecutorService定义与接口概述生命周期管理高级特性与最佳实践使用ExecutorService时的常见注意事项与最佳实践建议一、引言......
  • GeoStab:Improving the prediction of protein stability changes upon mutations
    目录摘要GeoFitness:GeoDDG:GeoDTm:预测指标GeoFitness模型架构图注意力节点与边更新数据性能GeoDDG/GeoDTm摘要本文章主要是将几何学习的模型(geometric-learning-basedmodels)用于预测蛋白质在突变后的稳定性和功能变化具体来说,文章提出了三个模型——GeoFitnes......
  • buuctf[ACTF2020 新生赛]BackupFile
    看题目的名称和首页的提升不难拆到这是一题关于网站页面备份的题目。直接访问index.php.bak,就可以得到一个文件,把文件打开可以得到一串PHP代码<?phpinclude_once"flag.php";if(isset($_GET['key'])){$key=$_GET['key'];if(!is_numeric($key)){e......
  • typescript学习文档(二)
    1、安装typescript全局安装:npminstall-gtypescript检查是否安装成功(出现版本号表示安装成功):tsc-v如果使用tsc指令出现如下错误:解决办法:以管理员的身份运行vscode终端执行:get-ExecutionPolicy,结果:Restricted终端执行:set-ExecutionPolicyRemoteSigned终端执行:get......
  • 程序异常退出后,托盘残留图标清理方法(C#)
    程序猿对于宕机再熟悉不过了,如果一个程序异常退出,那我们只能在Windows日志中找到它的踪迹;如果它是一个托盘程序,异常退出后,它会停留在托盘中久久不能离去,直到我们的鼠标从它身上划过;如果一个程序被另一个守护程序不断的杀掉、重启,那么它的结果会如下图所示,请注意!!这不是扫雷!!没......
  • Memcache分布式布置方案--一致性Hash分布机制PHP实现
    一致性Hash分布简介在服务器数量不发生改变时,普通的Hash分布可以很好地运作。当服务器的数量发生改变时,问题就出来了,试想,增加一台服务器时,同一个key经过Hash之后,与服务器取模的结果跟没增加服务器之前的结果会不一样,这就导致之前保存的数据丢失。为了把丢失的数据减少到最少,可以采......
  • SpringBoot拦截器注入stringredistemplate出现Consider defining a bean of type 'org
    问题自定义拦截器需要注入StringRedisTemplate来通过token获取redis中的数据自定义拦截器代码@ComponentpublicclassLoginInterceptorimplementsHandlerInterceptor{@AutowiredprivateStringRedisTemplatestringRedisTemplate;@Overridepublicb......
  • Oracle 在谈 connect by level
     在开发的过程中遇到需要把一行数据显示成N行,当时马上就想到了connectbylevel 这个实在太好用了显示一行selectlevelrnfromdualconnectbylevel<2;显示二行selectlevelrnfromdualconnectbylevel<3; 实例:目前显示一行selectpha.segment1,......
  • Microbiome|北京林业大学生物多样性研究团队揭示土壤原核生物群落在推动亚热带森林植物
    生物多样性与生态系统功能(BEF)之间的关系是生态研究的重要课题之一。土壤微生物群落的变化可能是调节这种关系的关键因素之一。关于森林中真菌群落对树木多样性-生产力关系的影响,已有大量研究。然而,对于细菌和古细菌,尽管它们在森林土壤中数量众多,并具有重要的生态系统功能,但关......