• winform总结2> Action<> ,Action,func<>,委托相关的理解


    1,他们是什么:

    Action 封装一个方法,该方法不具有参数并且不返回值。

    Action<> 封装一个方法,该方法具有最多16个参数并且不返回值。

    func<> 封装一个具有一个参数并返回 TResult 参数指定的类型值的方法。最多可以传递16个参数,并且可以有返回值,最后一个参数是返回值。

    目前了解到的好像也只有委托是需要传递一个方法的,既然这里的三个方式都是封装一个方法,那么这种写法就肯定是可以用到给委托传递参数一类型的任务时用,想想刚开始学习委托的时候,要给他传递一个方法,还要再写一个方法去传递,再把方法名传递过去,代码组织能力差点的可能写出来的云里雾里,会很混乱。那么有这些结构做一个中间层,所有问题都得到很好的解决,结构也不乱了,学习成本也低了。那么他们究竟是什么,我仔细思考过这个问题,现在我的理解就是他们都是委托的一种表达方式,就像事件一样,这样理解所有的疑惑就都解开了。可以传递方法,可以返回值也可以不返回值 这可不就是委托嘛.

    2.怎么用:

                Action<string> astr = new Action<string>((x) =>
                {
                    Console.WriteLine("Action<>" + x);
                });
                astr.Invoke("Action<>");
    Action a
    = new Action(() => { Console.WriteLine("Action"); }); a.Invoke();
    Func
    <string, string> func = new Func<string, string>((x) => { return x; }); string funcTest = func.Invoke("123"); Console.WriteLine("Func<>" + funcTest);

    3,用在什么地方:

    通过对这些东西的了解最直接的结果就是终于对一些方法的参数不再迷茫了. 最典型 lambda表达式中的那种写法,实际上就是Func<>这个东西,看方法签名一目了然。然后就是可以将Func<>作为方法的参数,这样的话,就可以把被调用方的具体的一部分操作权交给调用方来执行。

    public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);像这样的,知道里边的原理,再使用,就不会迷糊,很清晰的感觉。

  • 相关阅读:
    微信公众平台入门到精通-新浪云计算平台注册和使用
    PhpStorm快捷键设置/个性化设置,如何多项目共存?如何更换主题?
    10个免费的PHP编辑器/开发工具
    php利用PHPExcel类导出导入Excel用法
    PHP遍历数组的几种方法
    SQLSTATE[HY000] [2003] Can't connect to MySQL server on 'XXX' (13)
    CentOS下Apache虚拟主机配置
    centos下vsftpd登录后无法看见文件,无法创建文件及文件夹
    Linux开启MySQL远程连接
    php禁止某ip或ip地址段访问的方法(转载)
  • 原文地址:https://www.cnblogs.com/zzfstudy/p/6193909.html
Copyright © 2020-2023  润新知