C# 把函数作为参数传入另一个函数

2023-11-04

C# 把函数作为参数传入另一个函数

如果我们需要设计一个Compute函数,它是用来计算的,参数类型依次是int、函数、int
比如,
Compute(2, Add, 3)应该返回5,因为我们传入的是一个做加法的函数
Compute(2, Mul, 3)应该返回6,因为我们传入的是一个做乘法的函数

我们该如何写这个Compute函数呢

可以使用Func<>
像这样:

public static int Compute(int a, Func<int, int, int> func, int b)
{
  return func(a, b);
}

这里的第二个参数类型是Func<int, int, int>,就表明第二参数可以传一个函数,这个函数需要接收两个int型参数,返回一个int型的参数

然后再准备两个函数用来测试

public static int Add(int a, int b)
{
  return a + b;
}
public static int Mul(int a, int b)
{
  return a * b;
}

主函数中:

static void Main(string[] args)
{
  Console.WriteLine(Compute(2, Add, 3));
  Console.WriteLine(Compute(2, Mul, 3));
}

运行结果
5
6

完整代码是这样的

using System;

namespace Test
{
  class Program
  {
    public static int Compute(int a, Func<int, int, int> func, int b)
    {
      return func(a, b);
    }

    public static int Add(int a, int b)
    {
      return a + b;
    }
    public static int Mul(int a, int b)
    {
      return a * b;
    }

    static void Main(string[] args)
    {
      Console.WriteLine(Compute(2, Add, 3));
      Console.WriteLine(Compute(2, Mul, 3));
    }
  }
}

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

C# 把函数作为参数传入另一个函数 的相关文章

  • 如何检查图像对象与资源中的图像对象是否相同?

    所以我试图创建一个简单的程序 只需在单击图片框中更改图片即可 我目前只使用两张图片 所以我的图片框单击事件函数的代码 看起来像这样 private void pictureBox1 Click object sender EventArgs
  • 无法使用已与其底层 RCW 分离的 COM 对象。在 oledb 中

    我收到此错误 但我不知道我做错了什么 下面的代码在backrgroundworker中 将异常详细信息复制到剪贴板 System Runtime InteropServices InvalidComObjectException 未处理 通
  • UML类图:抽象方法和属性是这样写的吗?

    当我第一次为一个小型 C 项目创建 uml 类图时 我在属性方面遇到了一些麻烦 最后我只是将属性添加为变量 lt
  • 从父类调用子类方法

    a doStuff 方法是否可以在不编辑 A 类的情况下打印 B did stuff 如果是这样 我该怎么做 class Program static void Main string args A a new A B b new B a
  • 如何在列表框项目之间画一条线

    我希望能够用水平线分隔列表框中的每个项目 这只是我用于绘制项目的一些代码 private void symptomsList DrawItem object sender System Windows Forms DrawItemEvent
  • 如何忽略“有符号和无符号整数表达式之间的比较”?

    谁能告诉我必须使用哪个标志才能使 gcc 忽略 有符号和无符号整数表达式之间的比较 警告消息 gcc Wno sign compare 但你确实应该修复它警告你的比较
  • WPF 中的调度程序和异步等待

    我正在尝试学习 WPF C 中的异步编程 但我陷入了异步编程和使用调度程序的困境 它们是不同的还是在相同的场景中使用 我愿意简短地回答这个问题 以免含糊不清 因为我知道我混淆了 WPF 中的概念和函数 但还不足以在功能上正确使用它 我在这里
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • 在 Visual Studio 2008 上设置预调试事件

    我想在 Visual Studio 中开始调试程序之前运行一个任务 我每次调试程序时都需要运行此任务 因此构建后事件还不够好 我查看了设置的 调试 选项卡 但没有这样的选项 有什么办法可以做到这一点吗 你唯一可以尝试的 IMO 就是尝试Co
  • Web API - 访问 DbContext 类中的 HttpContext

    在我的 C Web API 应用程序中 我添加了CreatedDate and CreatedBy所有表中的列 现在 每当在任何表中添加新记录时 我想填充这些列 为此目的我已经覆盖SaveChanges and SaveChangesAsy
  • 如何衡量两个字符串之间的相似度? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定两个字符串text1 and text2 public SOMEUSABLERETURNTYPE Compare string t
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • 如何在 VBA 中声明接受 XlfOper (LPXLOPER) 类型参数的函数?

    我在之前的回答里发现了问题 https stackoverflow com q 19325258 159684一种无需注册即可调用 C xll 中定义的函数的方法 我之前使用 XLW 提供的注册基础结构 并且使用 XlfOper 类型在 V
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • 如何让Gtk+窗口背景透明?

    我想让 Gtk 窗口的背景透明 以便只有窗口中的小部件可见 我找到了一些教程 http mikehearn wordpress com 2006 03 26 gtk windows with alpha channels https web
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • WCF:将随机数添加到 UsernameToken

    我正在尝试连接到用 Java 编写的 Web 服务 但有些东西我无法弄清楚 使用 WCF 和 customBinding 几乎一切似乎都很好 除了 SOAP 消息的一部分 因为它缺少 Nonce 和 Created 部分节点 显然我错过了一
  • 为什么我收到“找不到编译动态表达式所需的一种或多种类型。”?

    我有一个已更新的项目 NET 3 5 MVC v2 到 NET 4 0 MVC v3 当我尝试使用或设置时编译出现错误 ViewBag Title财产 找不到编译动态表达式所需的一种或多种类型 您是否缺少对 Microsoft CSharp
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问

随机推荐

  • CVE-2023-28432 MiniO信息泄露漏洞复现

    CVE 2023 28432 MiniO信息泄露漏洞 MiniO 是一个基于 Apache License v2 0 开源协议的对象存储服务 它兼容亚马逊 S3 云存储服务接口 非常适合于存储大容量非结构化的数据 例如图片 视频 日志文件
  • 西门子plc编程和c语言类似吗,西门子PLC的优劣势总结(个人观点,有分歧欢迎讨论)...

    西门子SIMATIC系列PLC 诞生于1958年 经历了C3 S3 S5 S7系列 已成为应用非常广泛的可编程控制器 在冶金 化工 印刷生产线等领域都有应用 由最初发展至今 S3 S5系列PLC已逐步退出市场 停止生产 而S7系列PLC发展
  • 【sm2算法】基于mbedtls开源库国密算法的使用(二)

    在上一节中我们讲解了mbedtls基础知识 sm2环境 sm2公私钥的存储以及sm2公私钥的生成 sm2算法 基于mbedtls开源库国密算法的使用 一 我想月薪过万的博客 CSDN博客https blog csdn net qq 4188
  • 循迹小车基本原理和代码实现

    目录 一 循迹模块使用 二 接线方式 三 循迹小车原理 四 代码实现 一 循迹模块使用 1 TCRT5000传感器的红外发射二极管不断发射红外线 当发出的红外线没有被反射回来或被反射回来但强度不太够时 红外接收管一直处于关断状态 此时模块的
  • 网络层与数据链路层--一看便知

    文章目录 网络层 作用 IP协议 与IP协议有关的一些概念 协议头 分片和组装 网段划分 私有IP地址和公网IP地址 数据链路层 以太网 以太网帧格式 ARP协议 ARP数据报的格式 ARP协议工作流程 其他重要协议或技术 DNS ICMP
  • windows iocp适配epoll

    msafd h ifndef EPOLL MSAFD H define EPOLL MSAFD H include
  • 定档615

    6月15 24日 数字化基础软件自主创新分享周 即将火热来袭 预约通道现已正式开启 科技自立自强 在党的十九届五中全会已上升至国家发展中的战略支撑地位 近年来 随着信息产业自主创新相关政策 技术路线和实践路径的逐步明晰 自主创新落地的难点也
  • 利用swiper依赖做轮播图-详细步骤

    1 结构样式布局 div class swiper mySwiper div class swiper wrapper div class swiper slide a href img src js基础 js高级 imgs 1 jpg a
  • 前端第三方插件

    动画 tweenJS js动画库 easeljs js列表动画 d3Js 绘制图表 jspdf 生产pdf文件
  • 【基于Verilog的数字频率计设计】原创.上电测试OK

    Author 荷包蛋 E mail shuangfeiyanworld 163 com Device EP2C8Q208C8 Tool Quartus 8 1 Function 数字频率计 用8个数码管显示结果 单位为HZ 理论基础 在单位
  • 如何进行最小二乘法,并且附加条件呢?

    请问如何运用最小二乘法去解多项式 然后保证得到的结果都大于0呢
  • Fisco技术文档总结2---开发第一个区块链应用

    开发第一个区块链应用 本文介绍合约编译以及如何部署到区块链 通过Java SDK实现对区块链上合约的调用访问 本教程要求用户熟悉Linux操作环境 具备Java开发的基本技能 能够使用Gradle工具 熟悉Solidity语法 如果您还未搭
  • 使用Python计算四边形与拟合四边形的最大交并比IOU

    写这篇博客源于博友的提问将介绍如何使用python计算四边形与拟合四边形的最大交并比IOU 要想IOU 交集面积 并集面积 最大 由于交集是源轮廓本身面积是固定的 则需要并集面积小 可以近似相当于求轮廓的最小面积外接四边形 可以近似考虑用r
  • OpenCV矩阵之一平均值、方差、协方差、特征向量

    在普通的几何空间里 向量是一个带方向和大小的量 但一旦建立了坐标系 向量就与有序数组 x y z 对应起来了 这样的3维有序数组 x y z 就是一个向量 但也可以说是一个一行三列的矩阵 矩阵的每一行 列 都构成行 列 向量 对矩阵施行初等
  • Redis数据库云端最佳技术实践

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由腾讯云数据库 TencentDB发表于云 社区专栏 邹鹏 腾讯高级工程师 腾讯云数据库Redis负责人 多年数据库 网络安全研发经验 在网络 计算 存储 安全等领域有深入的研究
  • Python学习-----排序问题2.0(sort()函数和sorted()函数)

    目录 前言 1 sort 函数 示例1 阿斯克码比较 示例2 设置reverse 由大到小排序 示例3 基于key排序 传入一个参数 示例4 key的其他应用 2 sorted 函数 示例 前言 上一篇讲了Python排序问题中比较经典的三
  • linux+网络根文件系统,Linux--根文件系统的挂载过程分析——转自网络

    前言 本篇文章以S3C6410公版的Linux BSP和U Boot来进行分析 文中所有提及的名词和数据都是以该环境为例 所有的代码流程也是以该环境为例来进行分析 哈哈 如果有不正确或者不完善的地方 欢迎前来拍砖留言或者发邮件到guopei
  • STM32通过ESP8266与云服务器的通信

    个人从局域网内调试ESP8266开始就碰了一堆壁 在此总结一下 希望可以帮到看到这篇文章的人 关键性细节问题详情请见第五部分 注 仅以STA模式为例 第一部分 描述 STM32通过ESP8266连接无线路由器访问阿里云服务器并实现透传 第二
  • 架构笔记一:基础架构

    一 架构的基础定义 1 1 宏观定义 架构定义 软件架构指软件系统的顶层结构 架构是顶层设计 框架是面向编程或配置的半成品 组件是从技术维度上的复用 模块是从业务维度上职责的划分 系统是相互协同可运行的实体 不存在 银弹 软件设计过程中 模
  • C# 把函数作为参数传入另一个函数

    C 把函数作为参数传入另一个函数 如果我们需要设计一个Compute函数 它是用来计算的 参数类型依次是int 函数 int 比如 Compute 2 Add 3 应该返回5 因为我们传入的是一个做加法的函数 Compute 2 Mul 3