C#中的事件和委托_札记1

2023-11-08

C#中的事件和委托_札记1

委托

自定义委托_静态方法(被委托)

  1. 委托是一种类型 ,所以任何定义类的地方都可以定义委托类型;
  2. 自定义委托的基本格式示例如下:
        /// <summary>
        /// 自定义声明一个无参数无返回值的委托
        /// </summary>
        public delegate void MyDelegate();
  1. 定义一个与委托参数和返回值一致的静态方法(首先测试静态方法)
        /// <summary>
        /// 定义一个方法_没有参数没有返回值_静态方法
        /// </summary>
        public static void Test_static()
        {
            Console.WriteLine("测试自定义委托的使用_无参数无返回值_静态方法");
        }
  1. 在Main方法中实例化委托的第一种方法_标准方法
            //实例化委托的第一种方法_标准方法
            MyDelegate myDelegate1 = new MyDelegate(Test_static);
  1. 在Main方法中实例化委托的第一种方法_简写方法(推荐)
            //实例化委托的第二种方法_简写方法
            MyDelegate myDelegate2 = Test_static;
  1. 自定义委托的调用
            //自定义委托的调用
            myDelegate1.Invoke();
            myDelegate2.Invoke();

思考1:被委托的方法只能是静态方法吗? 答案是:NO

自定义委托_实例方法(被委托)

  1. 我们先定义一个方法_没有参数没有返回值_实例方法
        /// <summary>
        /// 定义一个方法_没有参数没有返回值_实例方法
        /// </summary>
        public void Test()
        {
            Console.WriteLine("测试自定义委托的使用_无参数无返回值_实例方法");
        }
  1. 自定义委托_实例方法(被委托) 的调用
    需要先对实例方法所在的类进行实例化
            Listing01_01 program = new Listing01_01();

然后再使用对象调用方法的方式对委托进行赋值操作和调用

            MyDelegate myDelegate3 = program.Test;
            myDelegate3.Invoke();

多播委托

多播委托其实说白了就是连续执行多个被委托的方法,可以使用操作符+=或-=实现

  1. 我们再定义另一个方法_测试多播委托的使用
        /// <summary>
        /// 定义另一个方法_测试多播委托的使用
        /// </summary>
        public static void Test_static2()
        {
            Console.WriteLine("测试自定义多播委托的使用_无参数无返回值_静态方法");
        }

2.我们进行多播委托的+=操作

            myDelegate1 += Test_static2;
            myDelegate1.Invoke();

运行结果:
编译运行后的结果
3.我们再进行多播委托的-=操作

            myDelegate1 -= Test_static;
            myDelegate1.Invoke();

运行结果:
在这里插入图片描述

系统委托

系统委托的使用_静态方法(被委托)

  1. 系统委托Action不需要定义可以直接使用
  2. 系统委托Action实例化的第一种方法_标准方法
Action action1 = new Action(Test_static);

3.系统委托Action实例化的第一种方法_简写方法(推荐)

Action action2 = Test_static;

4.系统委托的调用

            //系统委托的调用
            action1.Invoke();

运行结果:
在这里插入图片描述

系统委托的使用_实例方法(被委托)

1.直接上代码

            #region 系统委托的使用_实例方法(被委托)
            Console.WriteLine("******系统委托的使用_实例方法(被委托)******");
            Action action3 = new Action(program.Test);
            //系统委托的调用
            action3.Invoke();
            Console.WriteLine();
            #endregion

系统委托的使用_调用有参数有返回值的静态方法(被委托)

1.我们先定义一个方法_有参数有返回值_静态方法

        /// <summary>
        /// 定义一个方法_有参数有返回值_静态方法
        /// </summary>
        /// <param name="num"></param>
        /// <returns></returns>
        public static int Test3(int num)
        {
            return num;
        }

2.我们使用系统委托函数Func来实现

            //系统委托的调用
            Func<int, int> func = Test3;
            int i = func.Invoke(3);
            Console.WriteLine(i);

系统委托的使用_调用有参数有返回值的实例方法(被委托)

1.直接上代码,不赘述

            #region 系统委托的使用_调用有参数有返回值的实例方法(被委托)
            Console.WriteLine("******系统委托的使用_调用有参数有返回值的实例方法(被委托)******");
            //系统委托的调用
            Func<int, int> func1 = program.Test4;
            int j = func.Invoke(4);
            Console.WriteLine(j);
            Console.WriteLine();
            #endregion
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#中的事件和委托_札记1 的相关文章

  • ubuntu18.04安装pycharm专业版

    安装的pycharm版本 2017 4 操作系统 ubuntu18 04 LTS 步骤1 在官网下载安装包 https www jetbrains com pycharm download section linux 下载文件位于 Down
  • 一. 了解web及网络基础

    一 了解web及网络基础 web world wide web 万维网 是建立在互联网上的网络服务 分为网页和服务器 起初 互联网还只是少数人 为了能够远距离分享知识 前辈们提出一种设想 借助超文本 包含其他文档链接的文本 连成可相互参阅的
  • wangEditor 富文本在vue3的使用

    安装 yarn add wangeditor editor 或者npm install wangeditor editor save yarn add wangeditor editor for vue next 或者 npm instal
  • java大文件下载内存溢出解决办法

    第一种解决办法内存够用的情况 启动时设置 Xmx的值大一点 比如2G 第二种办法代码中使用缓冲流的方式 如果是本地文件就更好 如果是还需要再去文件服务器中下载一次也行 例子 private void download String down
  • 宜搭低代码开发师(高级)考试选择题错误整理集(自己整理的,考试前是50多分,看了后答题93分)

    目录 完成高级选择题认证目标 这是我考了无数次 整理的错题集 希望能够帮助到你 考
  • Win11编译cpu版本的pytorch源码

    1 下载源码和依赖库 首先 在github上下载指定版本的pytorch源码 地址如下 https github com pytorch pytorch 因为在pytorch源码中有一些依赖库是直接给出的超链接 因此都需要直接离线下载依赖库
  • 控制结构程序设计1

    某企业员工按小时计算工资 每月劳动时间 小时 每小时工资 总工资 总工资中扣除10 公积金 剩余的为应发工资 编写一个程序计算并输出某位员工的应发工资 具体要求 该员工的劳动时间和每小时工资数通过键盘输入 且在输入前要有提示信息 在输出结果
  • Node初次安装配置

    Node初次安装配置文档 一 下载Node js 安装Node js Node 官网地址 https nodejs org en 这里我们安装LTX版的 这个比较稳定 检查Node是否安装成功 win R cmd 按住键盘的win键和R键
  • day18Excise1

    1 阅读下面XML文档 然后判断下列说法正确的是 C
  • linux解压gz文件的命令

    解压tar gz文件的命令 LINUX解压缩TAR GZ文件命令 1 解压缩命令格式 tar zxvf 压缩文件名 tar gz 解压缩后的文件只能放在当前的目录 2 压缩命令格式 tar zcvf 压缩文件名 tar gz 被压缩文件名
  • 移动端页面禁止鼠标滑轮滚动的方法

    document body onmousewheel function event event event window event return false 火狐下使用 DOMMouseScroll document body addEv
  • 【数据结构】顺序表,链表

    前言 小亭子正在努力的学习编程 接下来将开启 javaEE 的学习 分享的文章都是学习的笔记和感悟 如有不妥之处希望大佬们批评指正 同时如果本文对你有帮助的话 烦请点赞关注支持一波 感激不尽 目录 前言 顺序表 ArrayList Arra
  • Elasticsearch

    Elasticsearch是一个分布式可扩展的实时搜索和分析引擎 它不仅包括了全文搜索功能 还可以进行以下工作 分布式实时文件存储 并将每一个字段都编入索引 使其可以被搜索 实时分析的分布式搜索引擎 可以扩展到上百台服务器 处理PB级别的结
  • 计算机无法找到扫描仪和照相机,Win7一体机无法安装扫描仪或者没有“扫描选项”的解决办法...

    现在的打印一体机都有打印 扫描 复印功能 而一些用户在win7中安装了打印机后发现扫描仪无法安装或安装后没有扫描选项 那么这样的情况该如何解决呢 现分享方法如下 1 既然扫描仪不能使用 有可能是扫描的服务 Windows Image Acq
  • Java教程:Mybatis一对多查询,并定义ResultMap

    Java教程 Mybatis一对多查询 并定义ResultMap 源码 PO 一方 ApiModel 事故管理 public class OcAccidentPO implements Serializable 事故ID ApiModelP
  • 1. MongoDB快速实战与基本原理

    分布式技术MongoDB 1 MongoDB介绍 1 1 什么是MongoDB 1 2 MongoDB vs 关系型数据库 1 3 MongoDB的技术优势 1 4 MongoDB的应用场景 2 MongoDB快速开始 2 1 linux安
  • 基于Python的在线自主评测系统设计与实现

    博主介绍 擅长Java 微信小程序 Python Android等 专注于Java技术领域和毕业项目实战 文末获取源码联系 精彩专栏推荐订阅 不然下次找不到哟 Java项目精品实战案例 300套 Java微信小程序项目实战 200套 Pyt
  • antd的TreeSelect获取父节点的值

    antd中有个treeSelect树选择组件 数据结构是一个树形结构 当我们点击时候会打开 然后可以选择不同的节点 选中的时候 当前的节点会被回填上输入框 但是现在有个需求是想选择子节点的时候 回填的时候 父节点跟子节点一起回填上 中间加个
  • Java全排列算法练习

    题目 素数就是不能再进行等分的数 比如 2 3 5 7 112 3 5 7 11 等 9 3 39 3 3 说明它可以3等分 因而不是素数 我们国家在 19491949 年建国 如果只给你 1 9 4 91 9 4 9 这 44 个数字卡片

随机推荐

  • 电脑文件&软件搬家迁移十大工具

    10 大适用于 Windows 的数据迁移软件 数据迁移至关重要 几乎所有组织都依赖于此 如果您认为数据传输不是一件容易的事 那么数据迁移软件可以帮上忙 1 奇客电脑迁移 将现有操作系统 软件 文件迁移到 新电脑的最佳方法之一是使用名为奇客
  • Unity---委托与事件

    目录 1 委托和事件在使用上的区别是什么 2 delegate委托 2 1示意图 2 2 DelegetTest cs 2 3 Deleget A cs 2 4 Deleget B cs 2 5 运行unity 点击按键 A 2 6 点击按
  • 《k8s-1.13版本源码分析》- 调度器设计

    本文原始地址 https farmer hutao github io k8s source code analysis core scheduler desigh html github项目地址 https github com farm
  • docker 安装elasticsearch以及kibana

    1 安装elasticsearch 1 1 拉取镜像 执行下面的命令将es的镜像拉取到本地 docker pull docker elastic co elasticsearch elasticsearch 6 5 0 1 2 启动容器 没
  • ➹使用webpack配置多页面应用(MPA)

    使用webpack配置MPA 为什么需要使用 webpack 构建多页应用呢 因为某些项目使用 SPA 不太合适 大多是 SEO 的原因 或者您在做项目时有其他的需求 如果你有如下需求 使用 ES6 进行开发 期望使用面向对象开发 clas
  • java 文件备注_JAVA 文档注释

    JAVA文档注释 一JAVA注释类型 Java注释分为三类 1单行注释 2多行注释 3文档注释 单行注释多行注释 主要用于代码辅助性的说明便于理解代码的逻辑 文档注释 主要用生成API文档 二文档注释类型 文档注释紧挨类方法属性前面放置否则
  • Kyligence Zen产品体验——一站式指标平台泰酷辣~

    文章目录 一 前言 二 为什么需要指标化平台 三 什么是Kyligence Zen 四 Kyligence Zen新特性 五 Kyligence Zen注册篇 六 Kyligence Zen体验篇 七 Kyligence Zen实战篇 7
  • 安卓百度地图开发(三)在定位图层获取指南针角度

    在官方文档中没有给出获取角度的方法 这里使用了安卓自带的传感器获取指南针角度 首先定义传感器和角度 private SensorManager mSensorManager double degree 0 在oncreate方法中初始化传感
  • Xmind使用技巧

    新建图表 根据需求 可新建为空白图表或模板图表 空白图 模板 提高工作效率 其中因果分析 鱼普 图 SWOT分析 比较与对比 读书笔记等常用 也可以新建空白图 改变鱼头的左右方向 相比就是样式没有模板的那么丰富
  • 操作系统 请求分页存储管理

    目录 请求分页存储管理中的页表机制 缺页中断机构 地址转换 页置换算法 页分配和页置换策略 工作集及抖动现象的消除 请求分页存储管理的优缺点 请求分页存储管理中的页表机制 系统需要解决的问题 系统如何获知进程当前所需页面不在主存 当发现缺页
  • 记录一次FISCO BCOS的console启动失败的问题(create BcosSDK failed for the number of available peers is 0)

    记录一次FISCO BCOS的console启动失败的问题 报错 create BcosSDK failed for the number of available peers is 0 版本 FISCO BCOS v2 7 0 conso
  • 新多模态大模型霸榜!支持图文混合输入,不懂知识还能现学

    克雷西 发自 凹非寺量子位 公众号 QbitAI 多模态大模型家族 又有新成员了 不仅能将多张图像与文本结合分析 还能处理视频中的时空关系 这款免费开源的模型 在MMbench和MME榜单同时登顶 目前浮动排名也保持在前三位 MMBench
  • 物联网的应用场景

    随着物联网技术的不断发展和普及 它已经在各个领域展现出了巨大的潜力和前景 下面将会探讨物联网的应用前景 1 智能家居 智能家居是物联网技术最广泛应用的领域之一 通过智能家居设备 人们可以在任何时间 任何地点通过手机 平板电脑等设备远程控制家
  • 深度学习原理分析之数据不足与过拟合

    人们常常知道若干种解决过拟合的方法但不知其因 本文对其进行原理剖析 一个模型所能提供的信息一般来源于两个方面 一是训练数据中蕴含的信息 二是在模型的形成过程中 包括构造 学习 推理等 人们提供的先验信息 当训练数据不足时 说明模型从原始数据
  • Spring Boot官方例子《Developing Your First Spring Boot Application》无法运行

    官方的第一个例子就卡住了 https docs spring io spring boot docs current reference htmlsingle getting started first application 按照要求 一
  • 【消息队列】kafka consumer demo

    package consumer import org apache kafka clients consumer ConsumerConfig import org apache kafka clients consumer Consum
  • git常用命令及免密登录

    常用命令 git config global user name 用户名 设置用户签名 git config global user email 邮箱 设置用户签名 git init 初始化本地库 git status 查看本地库状态 gi
  • 多线程写图像文件的一点小测试(Boost + Gual)

    转载自 http blog csdn net liminlu0314 article details 7420484 在处理遥感图像中 发现往往比较耗时的是在数据的IO中 尤其是在O 写入 的时候更加耗时 GDAL可以支持图像的多线程写入
  • 蓝桥杯——修改数组

    问题描述 给定一个长度为N的数组A A1 A2 AN 数组中有可能有重复出现的整数 在小明要按以下方法将其修改为没有重复整数的数组 小明会依次修改A2 A3 AN 当修改Ai时 小明会检查Ai是否在A1 Ai 1中出现过 如果出现过 则小明
  • C#中的事件和委托_札记1

    C 中的事件和委托 札记1 委托 自定义委托 静态方法 被委托 委托是一种类型 所以任何定义类的地方都可以定义委托类型 自定义委托的基本格式示例如下