当前位置: 首页 > news >正文

C# 委托(Delegate)一

一.Delegate的定义说明:

C# 中的委托(Delegate)就是类似于 C 或 C++ 中函数的指针。Delegate 是存有对某个方法引用的一种引用类型变量,引用可在运行时是可以被改变的,特别适用于实现事件和回调方法。所有的Delegate都是派生自 System.Delegate 的类。

二.声明委托(Delegate):

声明委托的常规语法如下:

delegate <return type> <delegate-name> <parameter list>

//关键字       返回类型        委托变量名称         参数表

 委托声明决定了可由该委托引用的方法,可指向一个与其具有相同标签的方法。

例如:

public delegate int MyDelegate (string s);

//用于引用任何一个带有一个单一的 string 参数的方法,并返回一个 int 类型变量的需求。

 三.实例化委托(Delegate):

一旦声明了委托类型,委托对象必须使用 new 关键字来创建,且与一个特定的方法有关。当创建委托时,传递到 new 语句的参数就像方法调用一样书写,但是不带有参数。

如示例:

界面如图

代码:

        class TestDelegate
        {
            static int num = 1;
            public static int AddNum(int Num1)
            {
                num += Num1;
                return num;
            }

            public static int MultNum(int Num2)
            {
                num *= Num2;
                return num;
            }
            public static int getNum()
            {
                return num;
            }


        }
        delegate int NumberChanger(int n);
        private void button15_Click(object sender, EventArgs e)
        {

            
            {
                // 创建委托实例
                NumberChanger nc1 = new NumberChanger(TestDelegate.AddNum);
                NumberChanger nc2 = new NumberChanger(TestDelegate.MultNum);
                // 使用委托对象调用方法
                nc1(205);
                numericUpDown11.Value = TestDelegate.getNum();
               
                nc2(55);
                numericUpDown12.Value = TestDelegate.getNum();
               
            }
        }

后续待写、、、、、、

相关文章:

  • Spring Boot 学习之路 -- 基础认知
  • 云电脑、指纹浏览器,虚拟机这三者的区别
  • quiz: python网络爬虫之规则1
  • 大豆重测序-文献精读53
  • 什么是文件完整性监控(FIM)
  • 大模型-模型预训练-模型参数量计算
  • 落魄前端搞副业之 改造淘宝首页(淘宝换肤)
  • Java实现Excel导入和导出
  • TypeScript 设计模式之【状态模式】
  • 生信分析Python编程高级技巧
  • DAY16||513.找树左下角的值 |路径总和|从中序与后序遍历序列构造二叉树
  • llama_deploy
  • 5个最佳开源RPA框架之一UI.Vision介绍
  • SylixOS网络之DMA(Direct Memory Access)
  • docker 创建showdoc服务 showdoc容器部署教程
  • 深入了解以太坊
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • __proto__ 和 prototype的关系
  • C# 免费离线人脸识别 2.0 Demo
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Laravel核心解读--Facades
  • Theano - 导数
  • ⭐ Unity + OpenCV 实现实时图像识别与叠加效果
  • vue的全局变量和全局拦截请求器
  • 测试如何在敏捷团队中工作?
  • 基于HAProxy的高性能缓存服务器nuster
  • 计算机在识别图像时“看到”了什么?
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 用Canvas画一棵二叉树
  • 如何正确理解,内页权重高于首页?
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #100天计划# 2013年9月29日
  • $GOPATH/go.mod exists but should not goland
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (九)c52学习之旅-定时器
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (学习日记)2024.01.19
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • .htaccess配置常用技巧
  • .Net Core 生成管理员权限的应用程序
  • .NET Core 中的路径问题
  • .NET4.0并行计算技术基础(1)
  • .NET单元测试使用AutoFixture按需填充的方法总结
  • .NET企业级应用架构设计系列之结尾篇
  • /3GB和/USERVA开关
  • ;号自动换行
  • @Async 异步注解使用
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析