C# Action和 Func的用法

C#中的数据类型 函数数据类型

Action 是一个数据类型 但是是没有返回值得函数数据类型

Func 用于指定一个有返回值的委托

  internal class Program{static void Main(string[] args){TT.F1(NoVoid);TT.F2(Void1);Void2(() => { Console.WriteLine("Void2执行了"); });}static void NoVoid(){}static void Void1(int i){Console.WriteLine("值是"+i);}static void Void2(Action act){Console.WriteLine("正在执行Void2");act(); //回调 这个委托方法}}class TT{public static void F1(Action act) { }public static void F2(Action<int> act) { }}

delegate和Action的写法

delegate写法

 public delegate void MyDelegate(string str);static void Main(string[] args){MyDelegate myDelegate = new MyDelegate(Sum);myDelegate("123");}static void  Sum(string str){Console.WriteLine(str);}

修改为 Action写法

   static void Main(string[] args){Action<int> i = Void1;i(5);}static void Void1(int i){Console.WriteLine("i的值是"+i);}

Action的写法更简洁


Func

Func是有返回值的

Func<T1>(有返回值) --------T1为返回值的类型,无参数类型

Func<T1,T2>(有返回值)-----T1是参数类型,T2是返回值类型

Func<T1,T2,T3>(有返回值)--T1和T2是参数类型,T3是返回值类型

代码示例

internal class Program
{static void Main(string[] args){Test.Fn1(fn1);Test.Fn2(fn2);}static int fn1(){return 12;}static string fn2(int a){return "123456";}
}
class Test
{public static void Fn1(Func<int> fn) { }public static void Fn2(Func<int,string> fn) { }
}

Lambda表达式

 Func<int,int>fn3=y=>y;Action<int, int> fn2 = (int x, int y) =>{Console.WriteLine(x + y);};

Func和泛型委托(4种方法)

 delegate bool CallBack(string a);delegate bool CallBack<T>(T obj);internal class Program{static void Main(string[] args){//查询是张字开头的string[] names = { "花木兰", "蒙恬", "白起", "张飞", "马超" };Console.WriteLine(Test.Main1(names, Fn1));Console.WriteLine(Test.Main2<string>(names, Fn1));Console.WriteLine(Test.Main3(names, Fn1));Console.WriteLine(Test.Main4<string>(names,Fn1));Console.WriteLine(Test.MyIndex(names,Fn1));}public static bool Fn1(string s){return s.StartsWith("张");}}class Test{public static string Main1(string[] args,Func<string,bool>f){for (int i = 0; i < args.Length; i++){if(f(args[i])){return args[i];}}return default;}public static T Main2<T>(T[]args,Func<T,bool>f){for(int i = 0;i < args.Length;i++){if (f(args[i])){return args[i];}}return default;}public static string Main3(string[]args,CallBack f){for (int i = 0; i < args.Length; i++){if (f(args[i])){return args[i];}}return default;}public static T Main4<T>(T[]args,CallBack<T> f){for (int i = 0; i < args.Length; i++){if (f(args[i])){return args[i];}}return default(T);}public static int MyIndex(string[] arrs, Func<string, bool> f){for (int i = 0; i < arrs.Length; i++){if (f(arrs[i])){return i;}}return -1;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/68029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++中的模板(上)

C中的模板(上) 模板参数和函数参数是很像的,函数参数定义的形参对象,而模板参数定义的是类型. 模板分为函数模板和类模板 函数模板 一个交换两个数的函数模板: template<class T> // 此处typename和class是等价的 void Swap(T &a, T &b) {T temp a;a b;b …

MySQL面试题----如何进行 MySQL 数据库备份与恢复

MySQL 数据库备份 1. 使用 mysqldump 工具(逻辑备份) 全量数据库备份 该方式会备份指定数据库中的所有数据和表结构。在命令行中输入以下命令,将 username 替换为你的 MySQL 用户名,password 替换为对应的密码,database_name 替换为要备份的数据库名,backup.sql 为备份文…

Java集合面试总结(题目来源JavaGuide)

问题1&#xff1a;说说 List,Set,Map 三者的区别&#xff1f; 在 Java 中&#xff0c;List、Set 和 Map 是最常用的集合框架&#xff08;Collection Framework&#xff09;接口&#xff0c;它们的主要区别如下&#xff1a; 1. List&#xff08;列表&#xff09; 特点&#xf…

deepseek接入pycharm 进行AI编程

要将DeepSeek接入PyCharm进行AI编程,可以按照以下步骤操作: ### 1. 获取DeepSeek API访问权限 DeepSeek通常以API的形式对外提供服务,你需要在其官方网站注册账号,申请API访问权限。在申请通过后,会获得API密钥(API Key),这是后续调用API的关键凭证。 ### 2. 安装必要…

奥迪改名风波再起,A6L能否率队创下新奇迹

文/王俣祺 导语&#xff1a;春节假期刚过&#xff0c;奥迪的车型命名规则又变了。在如今以内卷为主基调的环境下&#xff0c;车型改名可不是小事&#xff0c;而奥迪的这次调整背后藏着许多深意&#xff0c;也预示着2025年奥迪在产品布局上的新动向。 改名能否“改命” 回溯到…

【怎么用系列】短视频戒除-1-对推荐算法进行干扰

如今推荐算法已经渗透到人们生活的方方面面&#xff0c;尤其是抖音等短视频核心就是推荐算法。 【短视频的危害】 1> 会让人变笨&#xff0c;慢慢让人丧失注意力与专注力 2> 让人丧失阅读长文的能力 3> 让人沉浸在一个又一个快感与嗨点当中。当我们刷短视频时&#x…

改进Transformer,解读Tokenformer论文:基于参数分词化重新思考Transformer的扩展策略

Transformer 训练成本高昂的问题日益凸显&#xff0c;不仅需要耗费巨额的资金与大量的计算资源&#xff0c;还对环境产生了不可忽视的影响&#xff0c;最近由北京大学与谷歌联合发表的一篇论文&#xff0c;为这一棘手难题带来了全新的曙光。论文中提出的创新方案&#xff0c;有…

【STM32】HAL库USB虚拟U盘MSC配置及采用自带的Flash作为文件系统

【STM32】HAL库USB虚拟U盘MSC实现配置及采用自带的Flash作为文件系统 本文将自带的Flash作为文件系统 通过配置USB的MSC功能实现虚拟U盘 没有单独建立FATFS文件系统 仅仅是配置USB和Flash读写而已 当然 这里也可以用外部Flash等等 也可以配置文件系统来进行套壳 但总体而言不如…

Noise Conditional Score Network

NCSN p σ ( x ~ ∣ x ) : N ( x ~ ; x , σ 2 I ) p_\sigma(\tilde{\mathrm{x}}|\mathrm{x}) : \mathcal{N}(\tilde{\mathrm{x}}; \mathrm{x}, \sigma^2\mathbf{I}) pσ​(x~∣x):N(x~;x,σ2I) p σ ( x ~ ) : ∫ p d a t a ( x ) p σ ( x ~ ∣ x ) d x p_\sigma(\mathrm…

jdk8 G1收集器怎么手动调优

在 JDK 8 中&#xff0c;手动调优 G1 垃圾收集器可以通过以下步骤和参数进行&#xff1a; 1. 启用 G1 垃圾收集器 要启用 G1 垃圾收集器&#xff0c;需要在 JVM 启动参数中添加以下选项&#xff1a; -XX:UseG1GC 这个参数告诉 JVM 使用 G1 作为垃圾收集器。 2. 设置堆内存…

Nginx通过设置自定义标记识别代理调用

Nginx通过设置自定义标记识别代理调用 业务场景 最近遇到一个业务场景&#xff0c;部署在云端服务器的一个平台&#xff0c;接口提供给多个现场调用&#xff0c;其中一个现场是通过nginx代理服务器代理转发到云服务器&#xff0c;另外一个现场则是直接通过云服务器接口进行调…

前端知识速记:POST和GET

前端知识速记&#xff1a;POST和GET请求的区别 一、GET请求概述 GET请求是一种用于获取服务器资源的请求方式。**使用GET请求时&#xff0c;数据通过URL传递&#xff0c;适合用于获取数据而不修改资源。**以下是GET请求的一些基本特征&#xff1a; 数据附在URL后面&#xff…

axios如何利用promise无痛刷新token

目录 需求 需求解析 实现思路 方法一&#xff1a; 方法二&#xff1a; 两种方法对比 实现 封装axios基本骨架 instance.interceptors.response.use拦截实现 问题和优化 如何防止多次刷新token 同时发起两个或以上的请求时&#xff0c;其他接口如何重试 最后完整代…

【DeepSeek系列】01 DeepSeek-V1 快速入门

1、DeepSeek简介 2024年底&#xff0c;DeepSeek 相继推出了其第一代推理大模型&#xff1a;DeepSeek-R1-Zero 和 DeepSeek-R1。 DeepSeek-R1-Zero 是一个通过大规模强化学习&#xff08;RL&#xff09;训练的模型&#xff0c;训练过程中没有使用监督微调&#xff08;SFT&…

基于LabVIEW的Modbus-RTU设备通信失败问题分析与解决

在使用 LabVIEW 通过 Modbus-RTU 协议与工业设备进行通信时&#xff0c;可能遇到无法正常发送或接收指令的问题。常见原因包括协议参数配置错误、硬件连接问题、数据帧格式不正确等。本文以某 RGBW 控制器调光失败为例&#xff0c;提出了一种通用的排查思路&#xff0c;帮助开发…

【初/高中生讲机器学习】0. 本专栏 “食用” 指南——写在一周年之际⭐

创建时间&#xff1a;2025-01-27 首发时间&#xff1a;2025-01-29 最后编辑时间&#xff1a;2025-01-29 作者&#xff1a;Geeker_LStar 你好呀~这里是 Geeker_LStar 的人工智能学习专栏&#xff0c;很高兴遇见你~ 我是 Geeker_LStar&#xff0c;一名高一学生&#xff0c;热爱计…

密云生活的初体验

【】在《岁末随笔之碎碎念》里&#xff0c;我通告了自己搬新家的事情。乙巳年开始&#xff0c;我慢慢与大家分享自己买房装修以及在新家的居住体验等情况。 跳过买房装修的内容&#xff0c;今天先说说这三个月的生活体验。 【白河】 潮白河是海河水系五大河之一&#xff0c;贯穿…

系统通解:超多视角理解

在科学研究和工程应用中&#xff0c;我们常常面临各种复杂系统&#xff0c;需要精确描述其行为和变化规律。从物理世界的运动现象&#xff0c;到化学反应的进程&#xff0c;再到材料在受力时的响应&#xff0c;这些系统的行为往往由一系列数学方程来刻画。通解&#xff0c;正是…

Python爬虫:1药城店铺爬虫(完整代码)

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

openwebui入门

1 简介 ‌Open WebUI‌&#xff08;网址是openwebui.com&#xff09;是一个高度可扩展、功能强大且用户友好的自托管Web用户界面&#xff0c;专为完全离线操作设计&#xff0c;编程语言是python。它支持对接Ollama和OpenAI兼容的API的大模型。‌ Open WebUI‌在架构上是一种中…