zoukankan      html  css  js  c++  java
  • Func委托和Action委托

    http://stackoverflow.com/questions/4317479/func-vs-action-vs-predicate

    The difference between Func and Action is simply whether you want the delegate to return a value (use Func) or not (use Action).

    Func is probably most commonly used in LINQ - for example in projections:

     list.Select(x => x.SomeProperty)

    or filtering:

     list.Where(x => x.SomeValue == someOtherValue)

    or key selection:

     list.Join(otherList, x => x.FirstKey, y => y.SecondKey, ...)

    Action is more commonly used for things like List<T>.ForEach: execute the given action for each item in the list. I use this less often than Func, although I do sometimes use the parameterless version for things like Control.BeginInvoke and Dispatcher.BeginInvoke.

    Predicate is just a special cased Func<T, bool> really, introduced before all of the Func and most of the Action delegates came along. I suspect that if we'd already had Func and Action in their various guises, Predicate wouldn't have been introduced... although it does impart a certain meaning to the use of the delegate, whereas Func and Action are used for widely disparate purposes.

    Predicate is mostly used in List<T> for methods like FindAll and RemoveAll.

    Func用于有返回值的方法,Action用于没有返回值的方法

    Func<string>    表示一个有返回值的函数,返回值为string,但是函数没有参数

    Func<stirng,string>  表示一个有返回值的函数,返回值为string,函数参数为string

    Action<string>  表示一个无返回值的函数,函数参数为string

        Action b = Method;
        private static void Method()
        {
        }
    
        Action<string> a = Method;
        private static void Method(string str)
        {
        }
        Func<string> a = Method;
        private static string Method()
        {
            return string.Empty;
        }
    
    
        Func<string, string> b = Method;
        private static string Method(string str)
        {
            return string.Empty;
        }
  • 相关阅读:
    学习的原动力
    “六顶思考帽”给我的启示
    关于DataSet与Strongly typed DataSet几点思考(原创)
    设计模式之Singleton和Factory
    CentOS修改网络配置
    Proxmox VE(PVE)安装教程
    CentOS开启SELinux导致samba无法访问的解决办法
    nano编辑器使用教程
    CentOS 如何挂载硬盘
    PVE硬盘直通
  • 原文地址:https://www.cnblogs.com/chucklu/p/6525282.html
Copyright © 2011-2022 走看看