action and func

2024-04-16 23:08
文章标签 action func

本文主要是介绍action and func,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

以前我都是通过定义一个delegate来写委托的,但是最近看一些外国人写的源码都是用action和func方式来写,当时感觉对这很陌生所以看起源码也觉得陌生,所以我就花费时间来学习下这两种方式,然后发现确实代码简洁了不少。这两种方式我们也可以去实践的过程去慢慢运用。


先说一下委托:


模拟一下场景:小明最近学习情绪高涨,以前买的书已经满足不了欲望,打算去买本(一个程序员的自我修养)。可是呢以前总是跑书厂买,nm,太远了扛不住,就去跑去附近书店去买,小明去给钱就弄了一本书回来,这个过程就是委托。开始分析


1:小明要买一本一个程序员自我修养的书籍(xx书就不买)硬性要求 (这就是要定义委托性质)


代码:


 private delegate void BuyBook();


2:附近书店 (委托的方法)


代码:


public static void Book()
{
Console.WriteLine("我是提供书籍的");
}


3:小明和书店建立关系(给委托绑定方法) 


代码:


  BuyBook buybook = new BuyBook(Book);


4:小明给钱拿书(触发)


buybook();


上面的内容是为了能理解委托的用法下面呢我开始讲解Action和Func


Action的用法


1:小明很是苦恼,我就是买一本书籍,每次都让我定义下,烦死了,有没有一种方法不去定义委托呢,那么有吗,还真有,就是我们今天讲的Action


Action BookAction = new Action(Book);
            BookAction();
这样是不是就简单了很多


2:小明现在又不满意了,我把一个程序员的自我修养看完了,现在呢想买本其他书,那怎么办,我是不是要重新再次定义委托。其实不需要你只需要把参数穿过来就可以了。下面我们看Action<T>的用法
  static void Main(string[] args)
        {
            Action<string> BookAction = new Action<string>(Book);
            BookAction("百年孤独");
        }
        public static void Book(string BookName)
        {
            Console.WriteLine("我是买书的是:{0}",BookName);
        }
3:现在小明又改变主意了,我不仅要自己选择书籍,我还要在一个牛逼的书籍厂家买,有没有这种方式呢,那么告诉你有,Action<in T1,in T2>static void Main(string[] args)
        {
            Action<string,string> BookAction = new Action<string,string>(Book);
            BookAction("百年孤独","北京大书店");
        }
        public static void Book(string BookName,string ChangJia)
        {
            Console.WriteLine("我是买书的是:{0}来自{1}",BookName,ChangJia);
        }
Func的用法


小明又发生疑问了,每次我自己都去书店去拿书,有没有一种方法直接送到我家里呢,那么Func专门提供了这样的服务


Func 解释 封装一个不定具有参数(也许没有)但却返回 TResult 参数指定的类型值的方法。


1:我们先看一个没有参数只有返回值的方法
static void Main(string[] args)
        {
            Func<string> RetBook = new Func<string>(FuncBook);
            Console.WriteLine(RetBook);
        }
        public static string FuncBook()
        {
            return "送书来了";
        }
2:有参数有返回值的方法
static void Main(string[] args)
{
Func<string,string> RetBook = new Func<string,string>(FuncBook);
Console.WriteLine(RetBook("aaa"));
}
public static string FuncBook(string BookName)
{
return BookName;
}
3:Func一个很重要的用处就是传递值,下面我举一个简单的代码来说明


  Func<string> funcValue = delegate
            {
                return "我是即将传递的值3";
            };
            DisPlayValue(funcValue);
注释1:DisplayVaue是处理传来的值,比喻缓存的处理,或者统一添加数据库等


 private static void DisPlayValue(Func<string> func)
        {
            string RetFunc = func();
            Console.WriteLine("我在测试一下传过来值:{0}",RetFunc);
        }
总结


1:Action用于没有返回值的方法(参数可以根据自己情况进行传递)


2:Func恰恰相反用于有返回值的方法(同样参数根据自己情况情况)


3:记住无返回就用action,有返回就用Func

这篇关于action and func的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/910149

相关文章

Unable to instantiate Action, goodsTypeAction, defined for 'goodsType_findAdvanced' in namespace '/

报错: Unable to instantiate Action, goodsTypeAction,  defined for 'goodsType_findAdvanced' in namespace '/'goodsTypeAction......... Caused by: java.lang.ClassNotFoundException: goodsTypeAction.......

用ajax json给后台action传数据要注意的问题

必须要有get和set方法   1 action中定义bean变量,注意写get和set方法 2 js中写ajax方法,传json类型数据 3 配置action在struts2中

使用http-request 属性替代action绑定上传URL

在 Element UI 的 <el-upload> 组件中,如果你需要为上传的 HTTP 请求添加自定义的请求头(例如,为了通过身份验证或满足服务器端的特定要求),你不能直接在 <el-upload> 组件的属性中设置这些请求头。但是,你可以通过 http-request 属性来自定义上传的行为,包括设置请求头。 http-request 属性允许你完全控制上传的行为,包括如何构建请求、发送请

Flink整合Oozie Shell Action 提交任务带Kerberos认证

最近这段时间一直在忙新集群迁移,上了最新的cdh6.3.0 于是Flink 提交遇到了许多的问题,还好有cloudera License 有了原厂的帮助和社区的伙伴,问题解决起来快了不少。 集群具体情况是 CDH6.3.0 Flink1.8.1,整个数据平台全部组件都上了kerberos和ldap因为要过认证,所以任务提交方法我们选择统一Oozie提交任务,并且因为kerberos认证,还需要F

Servlet mapping specifies an unknown servlet name Action

看一下web.xml中<servlet-mapping>有没有配错

Elasticsearch func_score

场景介绍 衰减函数 总结 官网文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.x/query-dsl-function-score-query.html 作者公众号: 1.场景介绍 在全文检索中,排序是一个很讲究的事。关键字命中,是全文检索中一个很关键的因素。然而,某些时候,我们关键字的命中可能非常低,或者来两个

【ssh学习笔记】struts2的action与Spring

//由struts-spring-plugin管理,不需要加@Resource,或在<span style="font-family: Arial; font-size: 14px; line-height: 26px;">applicationContext.xml</span>中也不需要配置该bean //需要注入的对象也不需要加@Resource public class JsonA

Android中常用Action

Android中常用Action 2010-08-10 14:07 标准的Activity Actions ACT ION_MAIN                              作为一个主要的进入口,而并不期望去接受数据 ACT ION_VIEW                            向用户去显示数据 ACT ION_ATTACH_

github中action作用和讲解

1,简介 GitHub Actions 是 GitHub 的一个自动化功能,它允许你在 GitHub 仓库中自动执行软件开发工作流程。你可以使用 GitHub Actions 来执行各种任务,比如: 自动测试:每当代码被推送到仓库时,自动运行测试来确保代码质量。持续集成:自动构建和部署代码,确保新的代码更改不会破坏现有功能。代码格式化:自动格式化代码,以保持代码风格的一致性。自动部署:将代

Zotero tags(action and tags for zotero)怎么使用

先在下面的网址安装action and tags for zotero: https://github.com/windingwind/zotero-actions-tags 视频讲解: Zotero Tag -> Actions and Tags for Zotero - 远不止标签管理!_哔哩哔哩_bilibili 使用方法: 找到一些表情:https://getemoji.