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;
        }
  • 相关阅读:
    微信小程序实现运动步数排行(可删除)
    微信小程序实现运动步数排行(可删除)
    一个文艺的在线生成漂亮的二维码工具网站
    微信小程序常见的UI框架/组件库总结
    天天快车是款精细的游戏
    MHA的几种死法-叶良辰
    编译maxscale
    mydbtest文档
    高山仰止
    docker居然需要3.10以上的内核
  • 原文地址:https://www.cnblogs.com/chucklu/p/6525282.html
Copyright © 2011-2022 走看看