.NET Action 与 Func

2023-05-16

Action 与 Func是.NET类库中增加的内置委托,以便更加简洁方便的使用委托

内置委托类型,顾名思义Action和Func本身就是已经定义好的委托类型。两种委托类型的区别在于:Action委托签名不提供返回类型,而Func提供返回类型。
Action委托具有Action、Action<T1,T2>、Action<T1,T2,T3>……Action<T1,……T16>多达16个的重载,其中传入参数均采用泛型中的类型参数T,涵盖了几乎所有可能存在的无返回值的委托类型。

Func则具有Func、Func<T,Tresult>、Func<T1,T2,T3……,Tresult>17种类型重载,T1……T16为出入参数,Tresult为返回类型。

            var ts = new TimeSpan(0, 0, 100);

            Func<string, string, string> demo1 = (a, b) => { return string.Concat(a, b); };
            var t1 = demo1("123", "456");

            Func<int, int, int> demo2 = (param1, param2) =>
            {
                return param1 + param2;
            };

            var t2 = demo2(123, 456);

            //既然是委托类型,也同样可以与匿名函数、或者采用Lambda表达式结合使用:
            //匿名函数:
            Func<int, int, int> math1 = delegate (int param1, int param2)
            {
                return param1 + param2;
            };
            //Lambda:
            Func<int, int, int> math2 = (param1, param2) =>
            {
                return param1 + param2;
            };

            //Action的使用如同上面Func的使用一样,只是缺少了返回类型,直接调用委托函数。
            Action<int, int> math = (int param1, int param2) =>
                        {
                            Console.WriteLine((param1 + param2).ToString());
                        };
            math(3, 4);

            //C#的Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为“goes to”。 函数体多于一条语句的可用大括号括起。

            var temp = string.Empty;
            Action<string> actionDelegate = (x) => { temp = x; };
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET Action 与 Func 的相关文章

  • Visual Studio 2012 - 高效查找循环引用

    目前 如果我想检查解决方案中的循环引用 我选择Architecture Generate Dependency Graph For Solution 然后从打开的新选项卡中选择Layout Analyzers Circular Refere
  • 开始使用 BouncyCastle crypto dll c#

    我是密码学初学者 我想将 BouncyCastle dll 用于 c 但我找不到文档和示例 特别是 我需要使用 pkcs 7 p7m 结果 对文件进行签名 并向其中添加符合 RFC 3161 标准的来自受信任服务器的时间戳 m7m 结果 有
  • 自数据库创建以来,支持“ApplicationDbContext”上下文的模型已发生更改

    首先 我在其他地方没有看到这个错误 我想这不是重复的 所以请先阅读整个情况 一切都工作得很好然后我尝试更新我的模型类之一 the 应用类现在更新已被评论 我将在下面列出 我遇到了这个丑陋的错误 自创建数据库以来 支持 Application
  • .NET Regex Negative Lookahead - 我做错了什么?

    假设我有 StartTest NoInclude EndTest StartTest Include EndTest 并正在使用 StartTest NoInclude s S EndTest g 为什么我要匹配这两个组 正则表达式示例 h
  • Visual Studio 2015 RTM - 调试不起作用

    我已经安装了 VS 2015 RTM 仅此而已 并且无法调试任何解决方案 无论它是现有解决方案还是全新解决方案 使用 VS 2015 创建并针对 Net Framework 4 6 编译 它只会打开一个VS 中的新选项卡称为 中断模式 其中
  • System.MissingMethodException:找不到方法?

    以前工作的 ASP NET WebForms 应用程序现在抛出此错误 System MissingMethodException 找不到方法 The DoThis方法位于同一个类上 它应该可以工作 我有一个这样的通用处理程序 public
  • .NET 进程分配的内存何时释放回 Windows

    设置 NET 在启动时以及在收集后尝试满足分配请求时 分段为每一代的堆 0 1 2 LOH 分配内存 以获得连续的内存块 为每个堆分配的内存可能会随着应用程序 预热 而趋于平稳 但第 2 代和大型对象堆可能除外 在垃圾收集期间 每个堆 0
  • 外部组件中的控制器上的 404

    我在解决 Asp Net MVC 4 项目中的 404 响应时遇到问题 它是在 VS2012 中构建的 目标版本为 4 5 我已将预编译的视图和控制器内置到独立的 DLL 中 我能够动态加载 DLL 并从我的核心项目中检查它们 甚至调用它们
  • 当应用程序未聚焦时监听按键

    我有一个应用程序 C 4 0 WPF 它是隐藏的 可以通过单击系统托盘图标或我创建的其他框架 停靠在左侧和最上面的小框架 来显示 My customer wants to add a new way to display the appli
  • Java 中有类似 .NET 的 NotImplementedException 的东西吗?

    有没有类似 NET 的东西NotImplementedException在Java中 康芒斯朗 http commons apache org proper commons lang javadocs api 2 6 org apache
  • 为什么 C# 编译的正则表达式比等效的字符串方法更快?

    每次我必须对字符串执行简单的包含或替换操作 其中我正在搜索的术语是固定值 时 我发现如果我获取示例输入并对其进行一些分析 则使用编译的正则表达式是几乎 总是比使用 String 类中的等效方法更快 我尝试过比较多种方法 hs是要搜索的 干草
  • Facebook Graph API“/userid/feed”返回空白

    我正在使用 Facebook C SDK 但似乎无法使用 Graph API 获取反馈数据 我已从用户那里获得了以下扩展权限 范围 离线访问 publish stream publish checkins create event read
  • C# 暴露给 COM - 接口继承

    假设我有一个实现 IBaseClass 的类 BaseClass 然后我有一个继承IBaseClass的接口IClass 然后我有一个名为 class 的类 它实现了 IClass 例如 ComVisible true InterfaceT
  • 如何避免由于 DI 容器绑定要求而导致 BAL 依赖于 DAL?

    我的应用程序由三个项目组成 核心 DAL 和 BAL 核心包含域对象 客户 订单 产品 它还包含基本的 IRepository 接口 IRepository
  • 我想要 Spy++ 但我没有 Visual Studio [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我只有 SQL Server 2008 客户端工具 我想用Spy http msdn microsof
  • System.Threading._IOCompletionCallback.PerformIOCompletionCallback(...) 处的 System.AccessViolationException

    使用 Net Framework 4 我在多线程 C 代码中遇到 System AccessViolationException 即使我的所有代码都是托管代码 这可能是 Net 中的一个错误吗 因为我一直认为使用 Net 意味着无论我犯什么
  • 在 Windows XP 中,SqlCe 在受限用户帐户下打开缓慢

    我有一个使用 NET 4 0 构建的 Windows 应用程序 它的program files目录下有一个SqlCe数据库 C Program Files 公司名称 应用程序名称 Data Data sdf 该应用程序与 Inno Setu
  • 如何使用T4从一个模板同时生成两个文件?

    我遇到的情况是 我需要生成两个 CSharp 代码文件 它们的代码几乎相同 但方法的输入和输出类型的命名空间不同 事实上 每个文件都针对特定国家 地区 并且类型来自特定国家 地区的 WSDL 我正在围绕服务编写一些包装器 逻辑完全相同 但从
  • 托管 ODP.NET 驱动程序未显示在“数据源”对话框中

    在我的计算机上安装托管 ODP NET 后 ODP NET 托管驱动程序没有出现在里面选择数据源Visual Studio 2013 Professional 中的对话框 它应该是这样的 这就是它在我的机器上的实际外观 我已按照 轻松驱动
  • 禁止显示“资源名称不是有效标识符”

    我有一个包含 5000 多个资源字符串的项目 几乎所有的标识符中都有句点 我们正在切换到自动生成强类型类 当然 由于周期的原因 我们看到了几千条警告 资源名称 blah 不是有效的标识符 我知道不是 生成器将句点更改为下划线 一切都很好 我

随机推荐

  • 二值信号量和互斥锁到底有什么区别?

    原文链接 xff1a https www cnblogs com codescrew p 8970514 html 在说明之前我先抛出结论 xff1a 互斥锁和二值信号量在使用上非常相似 xff0c 但是互斥锁解决了优先级翻转的问题 假定我
  • 使用stm32CubeMX自动配置的工程文件,进行串口的不定长接收(非DMA方式)

    方法描述 xff1a 使用stm32CubeMX自动配置的工程文件 xff0c 进行串口的不定长接收 xff08 非DMA方式 xff09 实际问题解决尝试 xff1a 1 HAL库函数只有接收定长数据HAL UART Receive xf
  • 基于STM32平台的BMP180测试(模拟IIC)

    1 测试描述 xff1a 使用模拟IIC xff0c 从BMP180中获取ID号 温度值 气压值以及计算海拔高度 2 测试准备 xff1a 硬件平台 xff1a 原子战舰V3开发板 测试工具 xff1a 逻辑分析仪 串口调试工具 3 数据手
  • gitee 添加ssh公钥

    首先需要安装git 打开 Git Bash 在Bash中输入 ssh keygen t rsa C 34 xxxx 64 yyy com 34 用你的邮件地址进行替换 连着按三次回车 xff0c 第一次提示 34 Enter file in
  • ROS中使用<serial/serial.h>头文件

    ROS中使用 lt serial serial h gt 头文件 问题描述 编译后出现fatal error serial serial h 没有那个文件或目录 include lt serial serial h gt 解决办法 缺少se
  • realsenseD435i使用IMU出错

    realsense 使用IMU出错 已经参照blogs xff1a https blog csdn net weixin 46363611 article details 114643088 将 realsense ws src reals
  • 对极几何,PNP,ICP求解位姿的方法原理、优缺点

    文章目录 一 对极几何估计位姿1 本质矩阵或基础矩阵估计2 单应矩阵估计3 2D 2D时 xff0c 空间点位置计算 二 PNP估计位姿1 P3P方法估计位姿2 DLT方法估计位姿3 EPnP方法估计位姿3 BA方法估计位姿 三 ICP方法
  • 顺序表查找与散列表(哈希表)

    文章目录 一 数据结构二 平均查找长度 xff08 ASL xff09 三 顺序表查找1 顺序查找2 折半查找3 分块查找4 顺序表查找的对比 四 散列表1 散列表构造2 开放地址散列表构造3 散列表查找效率分析 一 数据结构 二 平均查找
  • You‘ll have to kill the Xtightvnc process manually

    You 39 ll have to kill the Xtightvnc process manually 然后 pkill u user
  • ubuntu Linux多个内核选择

    一 问题 ununtu经常自动升级 xff0c 或者是我们在update时 xff0c 系统自动升级内核 此时会导致较高版本的内核与系统相互矛盾 xff0c 而导致卡机等问题 此时需要对多余内核进行设置为默认内核或者将不正确内核删除 两种方
  • 东北天(ENU)和北东地(NED)

    文章目录 一 坐标系定义1 东北天坐标系 xff08 ENU xff09 2 北东地坐标系 xff08 NED xff09 二 在ENU坐标系向量变换到NED坐标系向量三 将载体相对ENU的姿态和位置 xff0c 变换为载体相对NED的姿态
  • opencv for arm

    大家好 xff0c 这篇文章介绍了在arm开发板上移植opencv的过程 虚拟机 xff1a Ubuntu16 04 64位 单板 xff1a jz2440 编译器 xff1a arm linux gcc 4 4 3 opencvbanbo
  • 多传感器数据融合算法综述

    多传感器数据融合是一个新兴的研究领域 xff0c 是针对一个系统使用多种传感器这一特定问题而展开的一种关于数据处理的研究 多传感器数据融合技术是近几年来发展起来的一门实践性较强的应用技术 xff0c 是多学科交叉的新技术 xff0c 涉及到
  • ROS之tf坐标变换

    1 什么是tf 变换 ROS 中的很多软件包都需要机器人发布tf 变换树 xff0c 那么什么是tf 变换树呢 xff1f 抽象的来讲 xff0c 一棵tf 变换树定义了不同坐标系之间的平移与旋转变换关系 具体来说 xff0c 我们假设有一
  • Android下载repo文件报错

    在执行 curl https dl ssl google com dl googlesource git repo repo gt bin repo 下代码的时候 xff0c 报以下错误 curl 7 couldn 39 t connect
  • 树莓派设置自动连接无线网络

    树莓派开机后自动连接无线网络方法 xff0c 亲测有效 1 在任意方法 xff08 无线或有线 xff09 已经连接树莓派的基础上 xff0c 执行该命令 xff0c 意思是编辑wpa supplicant conf这个文件 内容如下 xf
  • Spring boot Druid 多数据源JDBC和注解事务

    1 引入依赖 gradle文件配置 用maven引入也可以 runtimeOnly span class token string 39 com microsoft sqlserver mssql jdbc 39 span span cla
  • 优化查询性能

    目录 1 创建支持查询的索引2 限制查询结果的数量来减少网络需求3 使用投影来只返回需要的数据4 使用 hint来选择一个特点的索引5 使用增量运算符来执行服务端操作 进入MongoDB中文手册 xff08 4 2版本 xff09 目录 1
  • 'node' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 解决方法

    windows系统里 需要把nodejs安装目录路径设置进系统变量或用户变量 1 打开控制面板 gt 系统和安全 gt 系统 gt 高级系统设置 gt 环境变量 2 在 用户变量 或 系统变量 中查找变量PATH并将node js文件夹路径
  • .NET Action 与 Func

    Action 与 Func是 NET类库中增加的内置委托 xff0c 以便更加简洁方便的使用委托 内置委托类型 xff0c 顾名思义Action和Func本身就是已经定义好的委托类型 两种委托类型的区别在于 xff1a Action委托签名