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;
        }
  • 相关阅读:
    echarts数据包坐标拾取工具
    JS 多个条件判断
    js 实现各浏览器全屏
    前端统计使用插件
    JS 随机排序算法
    js中布尔值为false的六种情况
    Mosaic
    单点登录
    JavaScript数据结构和算法
    一个普通函数的冷僻属性(length、caller、arguments、name、[[Scopes]]和[[FunctionLocation]])
  • 原文地址:https://www.cnblogs.com/chucklu/p/6525282.html
Copyright © 2011-2022 走看看