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

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

相关文章:

  • 中达瑞和SHIS高光谱相机在黑色水彩笔墨迹鉴定中的应用
  • GIT - 如何从某个分支的 commit创建一个新的分支?
  • Day45
  • PlayWright | 初识微软出品的 WEB 应用自动化测试框架
  • QT中使用libcurl库实现到ftp服务器的上传和下载
  • 大话软工笔记—分析模型
  • Elasticsearch:spring2.x集成elasticsearch8.x
  • 基于Java(SpringBoot、Mybatis、SpringMvc)+MySQL实现(Web)小二结账系统
  • 网络安全全景解析
  • 多层PCB技术解析:从材料选型到制造工艺的深度实践
  • 【联网玩具】EN 18031欧盟网络安全认证
  • 【Linux】 Linux 进程控制
  • 用 NGINX 构建高效 SMTP 代理`ngx_mail_smtp_module`
  • 数据库三范式设计---小白初学+案例引入
  • 数据分析实战2(Tableau)
  • SpringCloud-基于SpringAMQP实现消息队列
  • 矩阵分解相关知识点总结(二)
  • 使用 C/C++ 和 OpenCV 添加图片水印
  • 接IT方案编写(PPT/WORD)、业务架构设计、投标任务
  • DAY 21 常见的降维算法
  • 咸阳公司做网站/企业获客方式
  • 网站成功案例分析/常州seo第一人
  • 西安注册网络公司/宁波seo搜索优化费用
  • 做网站分什么/网络推广的基本渠道
  • 常见的简单的app开发/成都百度提升优化
  • 电脑上如何进入wordpress/优化seo哪家好