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;
        }
  • 相关阅读:
    Qt 模态对话框不模态的问题
    Qt layout更新控件的问题
    javamail中使用一些问题的解决方案
    mysql too many connection解决方法
    hibernate的三种状态
    hibernate的几种主键
    hibernate的crud操作
    ajax简单校验用户名是否存在
    json的简单使用
    ajax读取服务器文本
  • 原文地址:https://www.cnblogs.com/chucklu/p/6525282.html
Copyright © 2011-2022 走看看