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

C#内置委托(Action)(Func)

概述

在 C# 中,委托是一种类型,它表示对具有特定参数列表和返回类型的方法的引用。C# 提供了一些内置委托,使得开发者可以更方便地使用委托功能,无需手动定义委托类型。本文将详细介绍 Action 和 Func 这两个常用的内置委托。

Action 委托

Action 委托用于表示没有返回值的方法。它可以有 0 到 16 个输入参数,这些参数的类型可以不同。

无参数的 Action 委

// 不支持返回值的内置委托
Action action = new Action(() =>
{Console.WriteLine("无参数委托");
});
action();

在这个例子中,我们创建了一个无参数的 Action 委托 action,并使用 Lambda 表达式为其赋值。当调用 action() 时,会执行 Lambda 表达式中的代码,输出 无参数委托

带参数的 Action 委托

// 带参数不可以有返回值
// 使用方法
Action<string, int> action1 = new Action<string, int>(MyAction);// 使用匿名函数
Action<string, int> action2 = (a, b) => {Console.WriteLine($"我叫{a},今年{b}岁");
};
action2("凡凡", 18);static void MyAction(string a, int b)
{Console.WriteLine($"{a},{b}");
}

这里创建了两个带参数的 Action 委托。action1 委托引用了 MyAction 方法,action2 委托使用了匿名函数。Action<string, int> 表示该委托接受一个 string 类型和一个 int 类型的参数,并且没有返回值。

Func 委托

Func 委托用于表示有返回值的方法。它至少有一个泛型参数,最后一个泛型参数表示返回值类型,前面的泛型参数表示输入参数类型。

无参数的 Func 委托

// 带返回类型的委托
Func<string> func1 = new Func<string>(MyFunc);
Console.WriteLine(func1());Func<string> func2 = () => { return "哈哈"; };
Console.WriteLine(func2());static string MyFunc()
{return "嘿嘿";
}

Func<string> 表示该委托没有输入参数,返回值类型为 stringfunc1 委托引用了 MyFunc 方法,func2 委托使用了匿名函数。

带参数的 Func 委托

// 设置了三个泛型参数类型,前两个代表参数,最后一个代表返回
Func<string, int, bool> func3 = new Func<string, int, bool>(MyFunc2);
Func<string, int, bool> func4 = (a, b) => { return int.Parse(a) == b; };
Console.WriteLine(func3("1", 2));
Console.WriteLine(func4("2", 2));static bool MyFunc2(string a, int b)
{return int.Parse(a) == b;
}

Func<string, int, bool> 表示该委托接受一个 string 类型和一个 int 类型的参数,返回值类型为 boolfunc3 委托引用了 MyFunc2 方法,func4 委托使用了匿名函数。

总结

Action 委托适用于不需要返回值的方法,而 Func 委托适用于需要返回值的方法。通过使用这些内置委托,可以减少手动定义委托类型的工作量,使代码更加简洁和易于维护。


namespace _2.内置委托
{internal class Program{static void Main(string[] args){//不支持返回值的内置委托Action action = new Action(() =>{Console.WriteLine("无参数委托");});action();//带参数不可以有返回值Action<string, int> action1 = new Action<string, int>(MyAction);//使用方法Action<string, int> action2 = (a, b) => {Console.WriteLine($"我叫{a},今年{b}岁");};//使用匿名函数action2("凡凡", 18);//带返回类型的委托Func<string> func1 = new Func<string>(MyFunc);Console.WriteLine(func1());Func<string> func2 =() => { return "哈哈"; };Console.WriteLine(func2());//设置了三个泛型参数类型,前两个代表参数,最后一个代表返回Func<string, int, bool> func3 =new Func<string, int, bool>(MyFunc2);Func<string, int, bool> func4 = (a, b) => { return int.Parse(a) == b; };Console.WriteLine(func3("1",2));Console.WriteLine(func4("2",2));}static void MyAction(string a,int b){Console.WriteLine($"{a},{b}");}static string MyFunc(){return "嘿嘿";}static bool MyFunc2(string a,int b){return int.Parse(a) == b;}}
}

相关文章:

C#内置委托(Action)(Func)

概述 在 C# 中&#xff0c;委托是一种类型&#xff0c;它表示对具有特定参数列表和返回类型的方法的引用。C# 提供了一些内置委托&#xff0c;使得开发者可以更方便地使用委托功能&#xff0c;无需手动定义委托类型。本文将详细介绍 Action 和 Func 这两个常用的内置委托。 A…...

kubernetes 部署项目

随着容器化技术的发展&#xff0c;使用Kubernetes&#xff08;简称K8s&#xff09;来部署和管理应用已经成为现代软件开发的标准实践之一。Kubernetes提供了一套强大的工具集&#xff0c;使得部署、扩展和管理应用程序变得更为简便高效。本文将带你走过从准备环境到部署一个实际…...

《几何原本》命题I.2

《几何原本》命题I.2 从一个给定的点可以引一条线段等于已知的线段。 设 A A A 为给定点&#xff0c; B C BC BC 为给定线段 连接 A B AB AB&#xff0c;作等边 △ A B D \triangle ABD △ABD 以 B B B 为圆心&#xff0c; B C BC BC 为半径作小圆 延长 D B DB DB 交小圆…...

【我的 PWN 学习手札】House of Kiwi

House of Kiwi 之前我们利用IO_FILE一般是通过劫持vtable来实现的&#xff0c; House of Kiwi虽然不是通过劫持vtable来实现&#xff0c;但实质上是劫持vtable指向的全局的_IO_file_jumps_表来实现的。注意&#xff1a;对于某些版本的glibc&#xff0c;_IO_file_jumps_并不可写…...

nvm的学习

学习 nvm&#xff08;Node Version Manager&#xff09; 是掌握 Node.js 开发的关键技能之一。以下是系统的学习路径和实战指南&#xff0c;涵盖从基础到进阶的内容&#xff1a; 一、基础入门 1. nvm 的核心作用 多版本共存&#xff1a;安装和管理多个 Node.js 版本&#xff…...

haclon固定相机位标定

什么是标定&#xff1f; 工业应用中相机拍到一个mark点的坐标为C1&#xff08;Cx,Cy&#xff09;&#xff0c;C1点对应的龙门架/机械手等执行端对应的坐标是多少&#xff1f; 标定就是解决这个问题&#xff0c;如相机拍到一个点坐标C1&#xff08;Cx,Cy&#xff09;&#xff0c…...

stm32(hal库)学习笔记-时钟系统

在stm32中&#xff0c;时钟系统是非常重要的一环&#xff0c;他控制着整个系统的频率。因此&#xff0c;我们有理由好好学一下时钟系统。 什么是时钟&#xff1f; 时钟是具有周期性的脉冲信号&#xff0c;一般我们常用占空比为50%的方波。可以形象的说&#xff0c;时钟就是单…...

【Java项目】基于SpringBoot的财务管理系统

【Java项目】基于SpringBoot的财务管理系统 技术简介&#xff1a;采用Java技术、SpringBoot框架、MySQL数据库等实现。系统基于B/S架构&#xff0c;前端通过浏览器与后端数据库进行信息交互&#xff0c;后端使用SpringBoot框架和MySQL数据库进行数据处理和存储&#xff0c;实现…...

Qt中如果槽函数运行时间久,避免阻塞主线程的做法

Qt中如果槽函数运行时间久&#xff0c;避免阻塞主线程的做法 一、解决步骤 创建一个工作线程类&#xff1a;继承自QObject&#xff0c;并在其中实现槽函数的逻辑。将工作线程类的实例移动到单独的线程中&#xff1a;通过moveToThread()方法将对象移动到新线程。启动线程&…...

曹操智行构建国内首个全域自研闭环智驾生态

2月28日&#xff0c;曹操出行举办曹操智行自动驾驶平台上线仪式&#xff0c;宣布已成功构建国内首个“F立方”全域自研闭环智驾生态&#xff0c;同时在苏杭两地开启Robotaxi运营试点&#xff0c;并投放搭载吉利最新智驾系统的车辆。 此次试点运营&#xff0c;标志着曹操出行在…...

day02_Java基础

文章目录 day02_Java基础一、今日课程内容二、数组&#xff08;熟悉&#xff09;1、定义格式2、基本使用3、了解数组的内存图介绍4、数组的两个小问题5、数组的常见操作 三、方法&#xff08;熟悉&#xff09;1、定义格式2、方法重载overload 四、面向对象&#xff08;掌握&…...

SpringSecurity 实现token 认证

配置类 Configuration EnableWebSecurity EnableGlobalMethodSecurity(prePostEnabledtrue) public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { Bean Override public AuthenticationManager authenticationManagerBean() throws Exception {return s…...

轻松实现语音生成:GPT-SoVITS V2整合包的远程访问操作详解

文章目录 前言1.GPT-SoVITS V2下载2.本地运行GPT-SoVITS V23.简单使用演示4.安装内网穿透工具4.1 创建远程连接公网地址 5. 固定远程访问公网地址 前言 今天要给大家安利一个绝对能让你大呼过瘾的声音黑科技——GPT-SoVITS&#xff01;这款由花儿不哭大佬精心打造的语音克隆神…...

解锁状态模式:Java 编程中的行为魔法

系列文章目录 后续补充~~~ 文章目录 一、状态模式&#xff1a;概念与原理二、状态模式的深度剖析&#xff08;一&#xff09;模式定义与核心思想&#xff08;二&#xff09;模式结构与角色 三、状态模式的实际应用场景&#xff08;一&#xff09;电商系统中的订单状态管理&…...

算法与数据结构(相交链表)

题目 思路 1.哈希集合 因为要求是否存在相交节点&#xff0c;那么我们就可以利用哈希集合先将listA链表里面的所有数据存入&#xff0c;然后访问listB&#xff0c;判断其是否有节点在哈希集合中&#xff0c;若存在&#xff0c;则说明此节点为相交的节点。若遍历完之后仍没有发…...

浅入浅出Selenium DevTools

前言 在自动化测试领域&#xff0c;Selenium一直是主流工具之一。随着前端技术的不断发展&#xff0c;浏览器的功能也在不断丰富。 Selenium 3版本前&#xff0c;一套通用的采集流程如上图所示&#xff1a; 打开Charles&#xff0c;设置Session自动导出频次及导出路径Seleniu…...

软件工程---净室软件工程

净室软件工程是一种软件开发方法&#xff0c;旨在通过形式化的数据和严格的测试来提高软件的可靠性和减少缺陷的数量。它的核心思想是在软件开发过程中最小化或消除软件缺陷&#xff0c;从而提高软件的质量和可靠性。这种方法强调在软件生命周期的早期阶段使用形式化方法进行规…...

OpenHarmony图形子系统

OpenHarmony图形子系统 图形子系统主要包括UI组件、布局、动画、字体、输入事件、窗口管理、渲染绘制等模块&#xff0c;构建基于轻量OS应用框架满足硬件资源较小的物联网设备或者构建基于标准OS的应用框架满足富设备的OpenHarmony系统应用开发。 1.1 轻量系统 简介 图形子…...

如何获取Mac OS 安装盘

发现虚拟机VirtualBox支持Mac虚拟&#xff0c;就想尝试一下。但是发现Mac的安装盘特别难拿到&#xff0c;因此留档。发现有几种方法&#xff0c;最简单的方法&#xff0c;是在有Mac 机器的情况下&#xff0c;直接到App Store里&#xff0c;根据Mac版本的名字查找并下载。另外还…...

【弹性计算】弹性裸金属服务器和神龙虚拟化(一):功能特点

弹性裸金属服务器和神龙虚拟化&#xff08;一&#xff09;&#xff1a;功能特点 特征一&#xff1a;分钟级交付特征二&#xff1a;兼容 VPC、SLB、RDS 等云平台全业务特征三&#xff1a;兼容虚拟机镜像特征四&#xff1a;云盘启动和数据云盘动态热插拔特征五&#xff1a;虚拟机…...

解决华硕灵耀X双屏Linux下扬声器不工作的问题

解决华硕灵耀X双屏Linux下扬声器不工作的问题系统信息解决方法0. 备份系统1. 修改内核启动参数&#xff0c;使用HDA驱动2. 测试修复方案3. 持久化修复方案系统信息 我的电脑是&#xff1a;华硕灵耀X双屏Pro UX5100HM 电脑声卡为&#xff1a;ALC294 操作系统为&#xff1a;Manj…...

机器学习真实难点:知识断裂、工具混沌与数据偏差

1. 这不是一份职业指南&#xff0c;而是一份“入行前必读的清醒剂”“Why it’s Super Hard to be an ML Researcher or Developer?”——这个标题我第一次看到时&#xff0c;正坐在凌晨两点的实验室里&#xff0c;盯着第17版模型在验证集上掉点0.3%的结果发呆。旁边三台GPU服…...

ARM嵌入式C#开发实战:基于SkiaSharp的低延迟GUI实现

1. 这不是玩具&#xff0c;是ARM嵌入式系统能力的“压力测试仪”很多人第一次听说“在ARM开发板上跑C#游戏”&#xff0c;第一反应是&#xff1a;这能行&#xff1f;C#不是Windows桌面和服务器的语言吗&#xff1f;Mono&#xff1f;.NET Core&#xff1f;ARM板子连图形驱动都配…...

QMCDecode:基于Swift的QQ音乐加密格式解析与转换方案

QMCDecode&#xff1a;基于Swift的QQ音乐加密格式解析与转换方案 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录&#xff0c;默认转…...

用Delphi 7打造动物农场小游戏:一场编程与数据结构的趣味之旅

文章来自&#xff1a;用Delphi 7打造动物农场小游戏&#xff1a;一场编程与数据结构的趣味之旅 当经典的Pascal语言遇上可爱的动物农场&#xff0c;会擦出怎样的火花&#xff1f; 前言 还记得第一次接触编程时的兴奋吗&#xff1f;当你敲下第一行代码&#xff0c;看到"He…...

别再死记硬背真值表了!用Logsim动态仿真,直观理解RS和D触发器的工作原理

动态仿真教学&#xff1a;用Logsim破解RS与D触发器的核心原理 当你第一次翻开数字电路教材&#xff0c;看到那些密密麻麻的真值表和抽象的逻辑符号时&#xff0c;是否感到一阵眩晕&#xff1f;传统教学往往要求学生死记硬背各种触发器的状态转换规则&#xff0c;却很少解释这些…...

AI大神吴恩达力荐,轻松入门大语言模型实战(附中文PDF+代码)

这本书由AI科普大神Jay Alammar与BERTopic算法作者Maarten Grootendorst联合撰写&#xff0c;是O’Reilly出版的LLM入门标杆指南&#xff0c;获吴恩达推荐。全书以图解方式讲解LLM原理、提示工程、文本分类生成、多模态应用及优化技术&#xff0c;分为理解原理、应用及优化三部…...

AI赋能百业,从城市治理到智能家居,这些应用场景让你大开眼界!

文章深入探讨了人工智能在各个领域的创新应用&#xff0c;包括城市治理、医疗、金融、教育、交通出行、零售电商、制造、能源、农业、智能家居、娱乐传媒、文化旅游等。通过具体的案例和技术手段&#xff0c;展示了AI如何提升效率、优化决策、改善生活质量。例如&#xff0c;成…...

C# WebAssembly构建高性能Web3D引擎实战

1. 这不是“把C#搬到浏览器”&#xff0c;而是重构Web图形开发的底层契约 你有没有试过在浏览器里跑一个带物理模拟、动态光照和实时骨骼动画的3D场景&#xff0c;结果发现JavaScript主线程卡成PPT&#xff0c;WebGL状态管理像在解九连环&#xff1f;我去年接手一个工业数字孪生…...

【VibeCoding系列教程02】2026年AI编程避坑实录:这三大误区,让我多走了半年弯路

你们有没有发现&#xff0c;人这辈子最大的敌人不是别人&#xff0c;是自己脑子里那些乱七八糟的想法。前两天有个粉丝私信我&#xff0c;说老哥&#xff0c;我看你上次说Vibe Coding挺猛的&#xff0c;我也想学&#xff0c;但我有三个顾虑。我说你说说看。他说第一&#xff0c…...