.NET Framework中自带的泛型委托Func

Func<>是.NET Framework中自带的泛型委托,可以接收一个或多个输入参数,并且有返回值,和Action类似,.NET基类库也提供了多达16个输入参数的Func委托,输出参数只有1个。

1、Func泛型委托

.NET Framework为我们提供了多达16个参数的Func委托定义,对于常见的开发场景已经完全够用。

如下图,

注意:TResult是返回值的类型。

示例说明:

Func<>:委托至少0个参数,至多16个参数,有返回值。

Func<string>:表示无参,有返回值的委托。

Func<int,string> :表示有传入参数int,string类型返回值的委托。

Func<int,string,bool>:表示有传入参数int、string,bool类型返回值的委托。

FuncAction<int,int,int,int>:表示有传入3个int型参数,int类型返回值的委托。

2、Func泛型委托的使用

Func泛型委托的使用方法,可以通过下面代码看一下,

例如,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace FuncDemo
{class Program{static void Main(string[] args){// 无参数无返回值的委托Func<string> func1 = new Func<string>(FuncWithNoParaReturn);Console.WriteLine("返回值={0}",func1());Console.WriteLine("----------------------------");// 使用delegateFunc<string> func2 = delegate { Console.WriteLine("使用delegate");             return "error"; };// 执行Console.WriteLine("返回值={0}",func2());Console.WriteLine("----------------------------");// 使用匿名委托Func<string> func3 = () => { Console.WriteLine("匿名委托");            return "func"; };Console.WriteLine("返回值={0}",func3());Console.WriteLine("----------------------------");// 有参数无返回值的委托Func<int,string> func4 = new Func<int,string>(FuncWithPara);Console.WriteLine("返回值={0}",func4(11));Console.WriteLine("----------------------------");// 使用delegateFunc<int,string> func5 = delegate (int i) { Console.WriteLine($"使用delegate的委托,参数值是:{i}");             return "delegate (int i)";};Console.WriteLine("返回值={0}",func5(22));Console.WriteLine("----------------------------");// 使用匿名委托Func<string,string> func6 = (string s) => { Console.WriteLine($"使用匿名委托,参数值是:{s}");            return "func6"; };func6("C#");Console.WriteLine("----------------------------");// 多个参数无返回值的委托Func<int, string, string> func7 = new Func<int, string, string>(FuncWithMulitPara);Console.WriteLine("返回值={0}",func7(33, "Java"));Console.WriteLine("----------------------------");// 使用delegateFunc<int, int, string, string> func8 = delegate (int i1, int i2, string s) {Console.WriteLine($"三个参数的Func委托,参数1的值是:{i1},参数2的值是:{i2},参数3的值是:{s}");return s;};Console.WriteLine("返回值={0}",func8(44, 55, "Python"));Console.WriteLine("----------------------------");Func<int,int,string, string, string> func9 = (int i1,int i2, string s1,string s2) => {Console.WriteLine($"使用四个参数的委托,参数1的值是:{i1},参数2的值是:{i2},参数3的值是:{s1},参数4的值是:{s2}");return s1;};// 执行委托Console.WriteLine("返回值={0}",func9(66,77, "C","CJavaPy"));Console.ReadKey();}static string FuncWithNoParaReturn(){Console.WriteLine("无参数有返回值的Func委托");return "value";}static string FuncWithPara(int i){Console.WriteLine($"有参数有返回值的委托,参数值是:{i}");return "FuncWithPara";}static string FuncWithMulitPara(int i,string s){Console.WriteLine($"有两个参数无返回值的委托,参数1的值是:{i},参数2的值是:{s}");return s;}}
}

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

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

相关文章

陕西某小型水库雨水情测报及大坝安全监测项目案例

项目背景 根据《陕西省小型病险水库除险加固项目管理办法》、《陕西省小型水库雨水情测报和大坝安全监测设施建设与运行管理办法》的要求&#xff0c;为保障水库安全运行&#xff0c;对全省小型病险水库除险加固&#xff0c;建设完善雨水情测报、监测预警、防汛道路、通讯设备、…

【word技巧】ABCD选项如何对齐?

使用word文件制作试卷&#xff0c;如何将ABCD选项全部设置对齐&#xff1f;除了一直按空格或者Tab键以外&#xff0c;还有其他方法吗&#xff1f;今天分享如何将ABCD选项对齐。 首先&#xff0c;我们打开【替换和查找】&#xff0c;在查找内容输入空格&#xff0c;然后点击全部…

回溯算法--4后问题

1.问题描述 四皇后问题&#xff1a;在4 4 的方格棋盘上放置4个皇后&#xff0c;使得没有两个皇后在同一行、同一列、也不在同一条45度的斜线上。问有多少种可能的布局&#xff1f; 解是4维向量 比如上面这个解<2,4,1,3> 分别表示圆圈的第2列、第4列等 还可以得到另一解…

javaSE学习笔记-未完

目录 前言 一、java基础 1.1概述 1.java语言发展史 2.Java语言版本 3.Java语言平台 4.Java语言特点 5.Java语言跨平台原理-可移植性 6.JRE和JDK的概述 7.JDK的下载和安装 8.JDK安装路径下的目录解释 9.path环境变量的作用及配置方式 10.classpath环境变量的作用及…

包装印刷行业万界星空科技云MES解决方案

印刷业的机械化程度在国内制造行业内算是比较高的&#xff0c;不算是劳动密集型企业。如书本的装订、包装的模切、烫金、糊盒等都已经有了全自动设备。印刷厂除了部分手工必须采用人工外&#xff0c;大部分都可以采用机器&#xff0c;也就意味着可以由少量工人生产出大量产品。…

Java Jar 包还不知道怎么反编译,赶紧看看这个 IDEA 插件!

前言 当我们使用 Java 开发时&#xff0c;经常会遇到一种情况&#xff1a;我们拿到了一个 JAR 文件&#xff0c;但是却没有源代码。这时候&#xff0c;我们就需要使用反编译工具来帮助我们还原出源代码。 反编译工具可以将编译后的 JAR 文件转换回可读的 Java 源代码。这样&a…

vscode设置保存后,自动格式化代码

第一步&#xff1a;打开setting.json文件 第二步&#xff1a;在setting.json中加入以下代码 "editor.formatOnType": true, "editor.formatOnSave": true, "editor.formatOnPaste": true

【网络协议】聊聊DNS协议如何域名解析和负载均衡

DNS 服务器 我们知道如果使用IP地址进行访问网站&#xff0c;很难进行记忆&#xff0c;所以DNS的作用是将域名转换成对应的IP地址。如果全世界都使用同一台DNS服务器&#xff0c;那么DNS服务器本身需要保证服务的高可用、高性能&#xff0c;以及分布式等。最好的方式就是分层。…

【4步精确手册】帮助你快速掌握国外纳斯达克大屏营销推广!

纳斯达克&#xff08;Nasdaq&#xff09;是美国著名的证交所之一&#xff0c;它是以高科技企业的上市闻名世界。纳斯达克大屏营销推广指的是在纳斯达克交易中心大型屏上展现广告、宣传信息的一种营销推广方式。下面我们就为大家介绍一下如何用四个简易流程把握国外纳斯达克大屏…

[尚硅谷React笔记]——第9章 ReactRouter6

目录&#xff1a; 课程说明一级路由重定向NavLink高亮useRoutes路由表嵌套路由路由的params参数路由的search参数路由的state参数编程式路由导航useRouterContextuseNavigationTypeuseOutletuseResolvedPath()总结项目地址 1.课程说明 概述 React Router以三个不同的包发布…

【市场分析】Temu数据采集销售额商品量占比分析数据分析接口Api

引言 temu电商平台是一个充满活力的电商平台&#xff0c;拥有多种商品类别和数万家店铺。在这个项目中我的任务是采集平台上的大量公开数据信息。通过数据采集&#xff0c;我旨在深入了解temu电商平台的产品分布、销售趋势和文本描述&#xff0c;以揭示有趣的见解。 数据采集…

二叉树OJ练习题(C语言版)

目录 一、相同的树 二、单值二叉树 三、对称二叉树 四、树的遍历 前序遍历 中序遍历 后序遍历 五、另一颗树的子树 六、二叉树的遍历 七、翻转二叉树 八、平衡二叉树 一、相同的树 链接&#xff1a;100. 相同的树 - 力扣&#xff08;LeetCode&#xff09; bool isSameTree(…

2022年09月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试&#xff08;1~6级&#xff09;全部真题・点这里 一、单选题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 第1题 十六进制数100&#xff0c;对应的十进制数为 &#xff1f;&#xff08; &#xff09; A: 128 B: 256 C: 28 D: 56 答…

【多线程】Lambda表达式

package org.example;public class TestLambda {public static void main(String[] args) {Like likenew Like();like.lambda();}}//定义一个函数式接口 interface ILike{void lambda(); }//实现类 class Like implements ILike{Overridepublic void lambda() {System.out.prin…

Java中的static

目录 static修饰成员变量 静态成员变量特征 static修饰成员方法 【静态方法特性】 static成员变量初始化 就地初始化 静态代码块初始化 注意事项 static修饰成员变量 静态成员变量特征 static修饰的成员变量&#xff0c;称为静态成员变量&#xff0c;静态成员变量最大的…

前馈神经网络自动梯度计算和预定义算子

目录 1 自动梯度计算和预定义算子 1.1 利用预定义算子重新实现前馈神经网络 1.2 完善Runner类 1.3 模型训练 1.4 性能评价 1.5 增加一个3个神经元的隐藏层&#xff0c;再次实现二分类&#xff0c;并与1.1.1做对比. 1.6 自定义隐藏层层数和每个隐藏层中的神经元个数&#xf…

【Python工具】Panoply介绍及安装步骤

Panoply介绍及安装步骤 1 Panoply介绍2 Panoply安装步骤&#xff08;Windows&#xff09;2.1 下载并安装JAVA环境2.2 下载Panoply报错&#xff1a;Error: A JNI error has occurred, please check your installation and try again. 参考 1 Panoply介绍 Panoply是一款由美国国…

Pycharm安装配置Pyqt5教程(保姆级)

目录 一、前言 1、依赖包 2、工具 二、安装依赖包 三、配置环境 四、配置设计工具 1、Qt Designer 2、PyRcc 3、PyUIC 五、使用 1、界面设计 2、ui文件转化为py文件 一、前言 很多情况下需要为程序设计一个GUI界面&#xff0c;在Python中使用较多的用户界面设计工具…

深度学习之基于Python+OpenCV+dlib的考生信息人脸识别系统(GUI界面)

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习在人脸识别领域的应用已经取得了显著的进展。Python是一种常用的编程语言&#xff0c;它提供了许多强大的库…

Makefile初识

目录 0.前期准备0.1、程序编译链接&#xff1a; 1.Makefile基础1.1、认识Makefile1.2、Makefile定义模式&#xff1a;(1) 定义模式&#xff1a;(2) 执行Makefile&#xff1a; 1.3、Makefile的变量(1) 变量定义&#xff1a;(2) **变量的赋值符**:(3) 自动化变量 1.4 伪目标1.5 文…