衢州网站开发/长春网站优化方案
1、委托
委托(Delegate)是一种类型,可以用来表示对一个或多个方法的引用。委托提供了一种方便的方式来将方法作为参数传递给其他方法,或将方法存储在数据结构中以供以后调用。
不带参数且没返回值的委托
delegate void HDLDelegat(); //声明了一个无参数返回的委托//定义一个函数作为委托的主体
static void HaiDiLao() {Console.WriteLine("海底捞总部");
}HaiDiLao(); //如果直接调用不是委托
//使用委托
HDLDelegat hdl = new HDLDelegat(HaiDiLao);
hdl(); //这里就相当于调用了 HaiDiLao()}
带参数没有返回值的委托
//定义委托
delegate void KaiFengCai(int money);//定义位委托的主体
static void KFC(int money) {if (money >= 100000) Console.WriteLine("才可以加盟肯德基");else Console.WriteLine("资质不够肯德基");
}//使用委托
KaiFengCai kaifengcai = new KaiFengCai(KFC);
kaifengcai(1000000);
带参数有返回值的委托
//定义委托
delegate string MaiDangLao(int money);//定义位委托的主体
static string MDL(int money) {string str = "";if (money >= 100000) str = "才可以加盟麦当劳";else str = "资质不够麦当劳";return str;
}//使用委托
MaiDangLao maidnaglao = new MaiDangLao(MDL);
Console.WriteLine(maidnaglao(1000000));
参数是一个委托的委托
//定义一个委托
delegate void MyDelegate();
//定义一个参数是另一个委托的委托
delegate void MyDelegate3(MyDelegate myDelegate);static void ProgramMothod() {Console.WriteLine("这是MyDelegate的委托");
}
//注意这个方法使用的时候需要传入委托对象
static void ProgramMothod3(MyDelegate mdelegate) {mdelegate(); //直接调用这个函数,相当于调用了ProgramMothod函数
}//使用委托
MyDelegate3 m3 = new MyDelegate3(ProgramMothod3);
m3(ProgramMothod);
参数是一个委托和一个数据类型的委托
//定义一个有参数的委托
delegate void MyDelegate2(int a, int b);
//定义一个参数是委托和数据类型的委托
delegate void MyDelegate4(MyDelegate2 myDelegate, int a);static void ProgramMothod2(int aValue, int bValue) {Console.WriteLine("{0}这是MyDelegate2的委托,{1}", aValue, bValue);
}
//定义一个参数是另一个委托和int类型的方法
static void ProgramMothod4(MyDelegate2 mdelegate, int a) {mdelegate(a, 90);
}MyDelegate4 m4 = new MyDelegate4(ProgramMothod4);m4(ProgramMothod2, 90); //参一是ProgramMothod2,参二是a
泛型也能和委托一起使用
//定义一个泛型委托
delegate void MyDelegate5<T>(T a);static void ProgramMothod5(string a) {Console.WriteLine(a);
}//使用委托
//委托的目的是:让方法通过委托来调用,加了泛型之后就表示委托的方法里面出来的数据类型需要和泛型有关才可以
MyDelegate5<string> m5 = new MyDelegate5<string>(ProgramMothod5);
m5("使用泛型的委托");
返回类型和参数都设置成泛型
//定义一个参数和返回值都是泛型的委托
delegate T MyDelegate6<T, D, W>(T A, D B, W c); static string ProgramMothod6(string a, int b, double c) {return a + b + c;
}//使用委托
MyDelegate6<string, int, double> m6 = new MyDelegate6<string, int, double>(ProgramMothod6);
Console.WriteLine(m6("100", 200, 300f));
Action和Func的使用
官方希望开发者自定义delegate,提供了 Action和Func来协助完成委托
其中Action用来描述一个void返回类型的方法,Func描述一个带有返回类型的方法
2、Action的使用
无返回值无参数的委托
Action action = new Action(ProgramMothod);action();static void ProgramMothod() {Console.WriteLine("无返回类型无参数的方法");
}
无返回类型有一个值的委托
Action<int> acction2 = new Action<int>(ProgramMothod2);acction2(100);static void ProgramMothod2(int a) {Console.WriteLine("无返回类型有一个参数的方法:传递了a{0}", a);
}
无返回值类型有一个string参数和一个类参数的委托
~~~csharp
Action<string, People> action3 = new Action<string, People>(ProgramMothod3);
People p = new People();
p.Name = “郭贝贝”;
action3(“这个博主叫做:”, p);
static void ProgramMothod3(string str, People p) {
Console.WriteLine(“无返回值类型有一个string参数和一个类参数的方法” + str + p.Name);
}
//声明一个类
class People {
public string Name;
}
~~~
注意:Action不能委托带有返回类型的方法
//Action action4 = new Action(TextModth1); //报错
3、Func的使用
有返回类型无参数的委托
Func<int> func = new Func<int>(TextModth1);
Console.WriteLine(func()); //100static int TextModth1() {return 100;}
有参数有返回类型的委托
//当设置了多个泛型之后,以最后一个作为返回类型(前面的泛型当作参数类型)
Func<int, string, string> func2 = new Func<int, string, string>(TextModth2);
Console.WriteLine(func2(100, "200")); //100200static string TextModth2(int a, string b) {return a + b;}
有参数有返回类型且返回类型是个类的委托
Func<int, People, People> func3 = new Func<int, People, People>(TextModth3);
People people = new People();
people.Age = 100;
Console.WriteLine(func3(18, people).Age); //118static People TextModth3(int age, People p1) {People people = new People();people.Age = age + p1.Age;return people;}class People {public string Name;public int Age;
}
相关文章:

C#基础——委托、Action和Func的使用
1、委托 委托(Delegate)是一种类型,可以用来表示对一个或多个方法的引用。委托提供了一种方便的方式来将方法作为参数传递给其他方法,或将方法存储在数据结构中以供以后调用。 不带参数且没返回值的委托 delegate void HDLDelega…...

不止业务缓存,分布式系统中还有哪些缓存?
缓存是分布式系统开发中的常见技术,在分布式系统中的缓存,不止 Redis、Memcached 等后端存储;在前端页面、浏览器、网络 CDN 中也都有缓存的身影。 缓存有哪些分类 如果你是做业务开发的话,提起缓存首先想到的应该是应用 Redis&…...

Java 基础学习(十三)集合框架、List集合
1 集合框架 1.1 Collection 1.1.1 集合框架概述 Java 集合框架是一组实现了常见数据结构(如列表、树集和哈希表等)的类和接口,用于存储一组数据。 开发者在使用Java的集合类时,不必考虑数据结构和算法的具体实现细节ÿ…...

el-select二次封装实现可分页加载数据
使用el-select时一次性渲染几百条数据时会造成页面克顿, 可以通过分页来实现, 这里我用的方式为默认获取全部数据, 然后一次性截取10条进行展示, 滚动条触底后会累加, 大家也可以优化为滚动条触底后发送请求去加载数据 创建自定义指令customizeFocus用户懒加载 在utils文件夹(…...

css实现0.5px宽度/高度显——属性: transform: scale
在大多数设备上,实际上无法直接使用 CSS 来精确地创建 0.5 像素的边框。因为大多数屏幕的最小渲染单位是一个物理像素,所以通常只能以整数像素单位渲染边框。但是,有一些技巧可以模拟出看起来像是 0.5 像素的边框。 这里介绍使用:…...

html懒人加载实现
在HTML中,懒加载(Lazy Load)是一种延迟加载图片或其他资源的技术,它可以提高页面的加载速度和性能。下面是一种实现懒加载的方法: 设置默认占位图片:在HTML中,为要延迟加载的图片设置一个默认的…...

Axure情形动作篇(ERP登录效验)
目录 一、ERP系统用户登录效验 1.1 完成步骤 1.2 最终效果 二、省市区联动 三、ERP菜单栏页面跳转 四、下拉加载效果实现 4.1 加载动画实现步骤 4.2 下划界面加载实现 4.3 最终效果 一、ERP系统用户登录效验 1.1 完成步骤 首先搭建ERP系统的登录界面(输入…...

LeetCode刷题--- 子集
个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题【 http://t.csdnimg.cn/yUl2I 】【C】 【 http://t.csdnimg.cn/6AbpV 】数据结构与算法【 http://t.csdnimg.cn/hKh2l 】 前言:这个专栏主要讲…...

【SQL】根据年份,查询每个月的数据量
根据年份,查询每个月的数据量 一种 WITH Months AS (SELECT 1 AS Month UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION…...

基于CTF探讨Web漏洞的利用与防范
写在前面 Copyright © [2023] [Myon⁶]. All rights reserved. 基于自己之前在CTF中Web方向的学习,总结出与Web相关的漏洞利用方法,主要包括:密码爆破、文件上传、SQL注入、PHP伪协议、反序列化漏洞、命令执行漏洞、文件包含漏洞、Vim…...

Apache CouchDB 垂直权限绕过漏洞 CVE-2017-12635 已亲自复现
Apache CouchDB 垂直权限绕过漏洞 CVE-2017-12635 已亲自复现 漏洞名称影响版本影响版本 漏洞复现环境搭建漏洞利用 总结 漏洞名称 影响版本 Apache CouchDB是一个开源的NoSQL数据库,专注于易用性和成为“完全拥抱web的数据库”。它是一个使用JSON作为数据存储格式…...

海康威视IP网络对讲广播系统命令执行漏洞(CVE-2023-6895)
漏洞介绍 海康威视IP网络对讲广播系统采用领先的IPAudio™技术,将音频信号以数据包形式在局域网和广域网上进行传送,是一套纯数字传输系统。 Hikvision Intercom Broadcasting System 3.0.3_20201113_RELEASE(HIK)版本存在操作系统命令注入漏洞,该漏洞源于文件/ph…...

IDE:DevEco Studio
简介 DevEco Studio是华为为开发者提供的一款集成开发环境(IDE),主要用于开发鸿蒙操作系统(HarmonyOS)的应用程序。作为一款全场景分布式开发工具,DevEco Studio支持多端开发、调试和模拟,为开…...

【QT】C++/Qt使用Qt自带工具windeployqt打包
基本操作 运行项目debug或者release 将运行后的可执行文件单独放到一个文件夹中 根据项目使用的kits来选择Qt的打包工具 打开工具后移动到exe文件夹下执行windeployqt xxx.exe 预览图 问题 打包后再其他电脑上运行出现下图错误 将自己电脑的这个文件拷到可执行文件夹中既…...

Ubuntu系统的基础操作和使用
文章目录 系统安装系统界面文件系统包管理命令行常见问题 Ubuntu是一个基于Debian的Linux发行版,以桌面应用为主。它是自由软件,意味着你可以自由地使用、复制、研究、修改和改进这个软件。下面我们将详细介绍Ubuntu系统的基础操作和使用。 系统安装 U…...

harmonyOS 自定义组件基础演示讲解
上文 HarmonyOS组件属性控制 链式编程格式推荐我们讲了一些系统组件 可以传入一些事件和参数 来达到一些不同的效果 其实 我们还可以用自己写的组件 那么 组件这么写? 其实 我们的 page 内部结果 就是一个组件 harmonyOS的概念 万物皆组件 那么 我们就可以在他下面…...

我的创作纪念日——成为创作者第1024天
机缘 一、前言 早上收到CSDN的推送信息,今天是我成为创作者的第1024天,回想起自己已经好久没有写博客了,突然间很有感触,想水一篇文章,跟小伙伴们分享一下我的经历。 二、自我介绍 我出生在广东潮汕地区的一个小城…...

正点原子驱动开发BUG(一)--SPI无法正常通信
目录 一、问题描述二、讲该问题的解决方案三、imx6ull的spi适配器驱动程序控制片选分析3.1 设备icm20608的驱动程序分析3.2 imx的spi适配器的驱动程序分析 四、BUG修复测试五、其他问题 一、问题描述 使用正点的im6ull开发板进行spi通信驱动开发实验的时候,主机无法…...

SpringBoot接入轻量级分布式日志框架GrayLog
1.前言 日志在我们日常开发定位错误,链路错误排查时必不可少,如果我们只有一个服务,我们可以只简单的通过打印的日志文件进行排查定位就可以,但是在分布式服务环境下,多个环境的日志统一收集、展示则成为一个问题。目…...

光电器件:感知光与电的桥梁
光电器件是电子工程领域的一个重要分支,主要研究光与电之间的相互转换。这些器件在许多领域都有广泛的应用,如通信、生物医学、军事等。 光电器件主要包括光电二极管、光电晶体管、光电倍增管等。这些器件的工作原理都是基于光电效应,即光子…...

Ceph入门到精通-smartctl 查看硬盘参数
smartctl 参数含义 Model Family: Toshiba s... Enterprise Capacity HDD Device Model: TOSHIBA MG08ACss Serial Number: sssssss LU WWN Device Id: 5 ss ss Firmware Version: 4303 User Capacity: 16,000,900,661,248 bytes [16.0 TB] Sector Sizes: 51…...

Module build failed: TypeError: this.getOptions is not a function
在使用webpack打包出现以上错误时,可能是你安装的css-loader和style-loader的版本过高。 我用的webpack版本是3.6.0 因此需要降低一下版本 在你编辑器终端输入以下命令: npm install css-loader3.6.0 npm install --save-dev style-loader1.00 然后接下…...

蓝牙电子价签芯片OM6626/OM628超低功耗替代NRF52832
电子价签应用简介 在全球零售业受到电商冲击、劳动力成本和周转率上升、消费者需求改变的行业背景下,电子价签、AI货架监控系统、自助结账设备、相关的方案将零售行业的发展带上智能化数字化的发展道路上。为企业与客户带来的更高效更便捷的消费体验。 蓝牙电子价…...

ELK(八)—Metricbeat部署
目录 介绍修改配置文件启动 Modulenginx开启状态查询配置Nginx module查看是否配置成功 介绍 Metricbeat 是一个轻量级的开源度量数据收集器,用于监控系统和服务。它由 Elastic 公司开发,并作为 Elastic Stack(Elasticsearch、Logstash、Kiba…...

Ansible自动化运维以及模块使用
ansible的作用: 远程操作主机功能 自动化运维(playbook剧本基于yaml格式书写) ansible是基于python开发的配置管理和应用部署工具。在自动化运维中,现在是异军突起 ansible能够批量配置、部署、管理上千台主机。类似于Xshell的一键输入工具。不需要每…...

数据分析场景下,企业大模型选型的思路与建议
来源/作者:爱分析 随着大模型带来能力突破,让AI与数据分析相互结合,使分析结果更好支撑业务,促进企业内部数据价值释放,成为了当下企业用户尤为关注的话题。本次分享主要围绕数据分析场景下大模型底座的选型思路&#…...

Mongodb复制集架构
目录 复制集架构 复制集优点 复制集模式 复制集搭建 复制集常用命令 复制集增删节点 复制集选举 复制集同步 oplog分析 什么是oplog 查看oplog oplog大小 复制集架构 复制集优点 数据复制: 数据在Primary节点上进行写入,然后异步地复制到Secondary节点&a…...

云原生之深入解析Kubernetes集群发生网络异常时如何排查
一、Pod 网络异常 网络不可达,主要现象为 ping 不通,其可能原因为: 源端和目的端防火墙(iptables, selinux)限制; 网络路由配置不正确; 源端和目的端的系统负载过高,网络连接数满…...

error: C2039: “qt_metacast“: 不是 “***“ 的成员
报错信息: error C2039: "qt_metacast": 不是 "radartrack::Base_track_data" 的成员 最近在使用Qt开发,自定义的数据类在继承数据抽象类和QObject类时总是报“qt_metacast 不是不是 "radartrack::Base_track_data" 的成员…...

量子计算:开启IT领域的新时代
量子计算:开启IT领域的新时代 一、量子计算的基本原理与背景 量子计算作为一项前沿高级技术,正逐渐引起IT领域的广泛关注。传统计算机是通过二进制位(0和1)来储存和处理信息,而量子计算机则利用量子位或称为“量子比特…...