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

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.xdnf.cn/news/12084.html

相关文章:

  • 大模型面试题总结
  • 达芬奇·DaVinci Resolve Studio——影像美学的巅峰之翼
  • iOS 项目怎么构建稳定性保障机制?一次系统性防错经验分享(含 KeyMob 工具应用)
  • 【十年技术演进深度解构:车载充电机(OBC)将成为新能源汽车的“能源大脑”】
  • .NET 8集成阿里云短信服务完全指南【短信接口】
  • HttpServletRequest常用方法
  • 【学习记录】Linux 密码破解实战
  • Stream流性能分析及优雅使用
  • FSC认证概述?FSC认证的核心原则与标准?FSC认证的市场价值与意义
  • 数学知识体系难易程度表及关系
  • (25)课41 删除外键约束:ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
  • Python绘图库及图像类型之基础图表
  • 6个月Python学习计划 Day 14 - 阶段复盘 + 项目练习测试
  • Qwen2.5-VL - 多模态旋转位置嵌入(Multimodal Rotary Position Embedding, MRoPE)
  • 计算机操作系统知识点总结②
  • 天机学堂(我的课表)
  • winform下DevExpress中datagridview中数据批量保存不上
  • 【python深度学习】Day 44 预训练模型
  • 安装 Nginx
  • 一则systemctl service诡异问题
  • GAN模式崩塌难题:成因分析与多维度解决方案
  • stripe支付测试,ngrok无法使用?免费vscode端口转发,轻松简单!
  • 第八部分:第四节 - 列表渲染与条件渲染:根据订单显示不同内容
  • [Java 基础]类,面向对象的蓝图
  • Windows 下载、安装、配置和使用Node
  • BUU MISC(持续更新)
  • Java 中实现线程的创建和启动
  • [ACM MM 2024]Lite-Mind:Towards Efficient and Robust Brain Representation
  • MySQL对数据库用户的操作
  • VS Code开发项目,配置ESlint自动修复脚本