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

C#入门学习笔记 #8(委托)

欢迎进入这篇文章,文章内容为学习C#过程中做的笔记,可能有些内容的逻辑衔接不是很连贯,但还是决定分享出来,由衷的希望可以帮助到你。

笔记内容会持续更新~~

本章介绍C#中的委托,本章难度较大...

委托

C#中的委托是C语言、C++中函数指针的升级版。接下来介绍一个概念——一切皆地址。因为变量(数据)是以某个地址为起点的一段内存中所存储的值。函数(算法)是以某个地址为起点的一组机器语言指令。也就是说,无论是数据还是算法,都是保存在内存当中的,变量用来寻找数据的地址,函数用来寻找算法的地址。接下来先通过两个简单的例子来介绍下委托的简单使用。

Action委托

Func委托

这里Func的泛型有很多种,Add方法和Sub方法只有两个参数,所以选择带有两个参数的。尖括号里写的是目标方法的返回类型,当尖括号内有多个类型时,最后一个是返回类型,前面的才是参数类型。

Aciton委托和Func委托是微软为我们声明好的委托,接下来介绍如何自己声明委托。委托是一种类,类是数据类型所以委托也是一种数据类型。所以委托也可以用来声明变量、创建实例。下面来尝试自己声明委托。

声明委托

using System;
using System.CodeDom;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace ConsoleApp1
{public delegate double Cal(double x, double y);internal class Program{static void Main(string[] args){Calculator calculator = new Calculator();Cal cal1 = new Cal(calculator.Add);Cal cal2 = new Cal(calculator.Sub);Cal cal3 = new Cal(calculator.Mul);Cal cal4 = new Cal(calculator.Div);double a = 100;double b = 200;double c = 0;c = cal1.Invoke(a, b);Console.WriteLine(c);c = cal2.Invoke(a, b);Console.WriteLine(c);c = cal3.Invoke(a, b);Console.WriteLine(c);c = cal4.Invoke(a, b);Console.WriteLine(c
http://www.lryc.cn/news/2402313.html

相关文章:

  • CSS 3D 变换中z-index失效问题
  • Vue3 中使用 i18n
  • vue:当前对象添加对应值
  • Tailwind CSS 实战:基于 Kooboo 构建 AI 对话框页面(七):消息框交互功能添加
  • JavaScript 核心原理深度解析-不停留于表面的VUE等的使用!
  • 【计算机网络】网络层IP协议与子网划分详解:从主机通信到网络设计的底层逻辑
  • 基于WSL搭建Ubnutu 20.04.6 LTS(二)-部署Docker环境
  • 【图像处理入门】6. 频域图像处理:傅里叶变换与滤波的奥秘
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的生态农庄留存运营策略研究
  • Jenkins实现自动化部署Springboot项目到Docker容器(Jenkinsfile)
  • 【Linux】Git原理与使用
  • Cursor 工具项目构建指南: Python 3.8 环境下的 Prompt Rules 约束
  • A*算法实现原理以及实现步骤(C++)
  • Devops自动化运维---py基础篇一
  • 平安养老险蚌埠中心支公司开展金融宣教活动
  • 游戏设计模式 - 子类沙箱
  • java-springboot文件上传校验之只允许上传excel文件,且检查不能是脚本或者有害文件或可行性文件
  • openvino如何在c++中调用pytorch训练的模型
  • Redisson简明教程—你家的锁芯该换了
  • 48V带极性反接保护-差共模浪涌防护方案
  • Python----目标检测(使用YOLO 模型进行线程安全推理和流媒体源)
  • jvm学习第1day jvm简介,栈溢出、堆溢出
  • 用广告维持的免费 AI 图像生成工具(个人项目分享)
  • 分析Web3下数据保护的创新模式
  • ​减少交通拥堵、提高效率、改善交通安全的智慧交通开源了。
  • 协议融合驱动效能跃升:Modbus转Ethernet IP的挤出吹塑机应用
  • Hive的TextFile格式优化方法
  • bug 记录 - 使用 el-dialog 的 before-close 的坑
  • Next.js 中间件鉴权绕过漏洞 CVE-2025-29927
  • 基于YOLO-NAS-Pose的无人机象群姿态估计:群体行为分析的突破