• Func,Action 的介绍


    Func,Action 的介绍

    Func是一种委托,这是在3.5里面新增的,2.0里面我们使用委托是用Delegate,Func位于System.Core命名空间下,使用委托可以提升效率,例如在反射中使用就可以弥补反射所损失的性能。

    Action<T>和Func<T,TResult>的功能是一样的,只是Action<T>没有返类型,

    Func<T,T,Result>:有参数,有返回类型
    Action,则既没有返回也没有参数,


    Func<T,TResult> 
    的表现形式分为以下几种:

    1。Func<T,TResult>
    2。Func<T,T1,TResult>
    3。Func<T,T1,T2,TResult>
    4。Func<T,T1,T2,T3,TResult>
    5。Func<T,T1,T2,T3,T4,TResult>

    分别说一下各个参数的意义,TResult表示 
    委托所返回值 所代表的类型, T,T1,T2,T3,T4表示委托所调用的方法的参数类型,
    Func委托声明的最后一个泛型类型参数是委托所接收方法的返回值类型,前面的泛型类型参数(如果有的话)就是委托所接收的方法的形参类型

    但是如果我们需要所封装的方法不返回值,增么办呢?就使用Action!

    可以使用 
    Action<T1, T2, T3, T4>委托以参数形式传递方法,而不用显式声明自定义的委托。封装的方法必须与此委托定义的方法签名相对应。也就是说,封装的方法必须具有四个均通过值传递给它的参数,并且不能返回值。(在 C# 中,该方法必须返回 void。在 Visual Basic 中,必须通过 Sub…End Sub 结构来定义它。)通常,这种方法用于执行某个操作。
    使用Action 委托,接收拥有0到4个参数且返回值类型为void的方法。
    使用方法和Func类似!




    Action:既没有返回,也没有参数,使用方式如下:

    Action 
    action = null;//定义action

    action =  CheckIsVoid;//封装方法,只需要方法的名字

    action();//调用



    总结:使用Func<T,TResult>和Action<T>,Action而不使用Delegate其实都是为了简化代码,使用更少的代码达到相同的效果,不需要我们显示的声明一个委托,Func<T,TResult>的最后一个参数始终是返回类型,而 
    Action<T,TResult>是没有返回类型的,而Action是没有返回类型和参数输入的。






    Action<T>泛型委托


    描述:

        封装一个方法,该方法只采用一个参数并且不返回值.

    语法:

        public delegate void Action<T>(T arg);

    T:

        参数类型:此委托封装的方法的参数类型

    arg:

        参数:此委托封装的方法的参数

    备注:

        通过此委托,可以将方法当做参数进行传递.

    其他形式:

        public 
    delegate void Action<T1, T2>(T1 arg1, T2 arg2);
        public delegate 
    void Action<T1, T2, T3>(T1 arg1, T2 arg2, T3 arg3);
        public delegate 
    void Action<T1, T2, T3, T4>(T1 arg1, T2 arg2, T3 arg3, T4 
    arg4);

  • 相关阅读:
    GZIP压缩
    对象的constructor属性
    session会话复制
    第一篇博客 iframe自适应高度
    【NOI2012T4】迷失游乐园-环套树+树形DP+期望DP
    【NOI2012T4】迷失游乐园-环套树+树形DP+期望DP
    【HDU5072】Coprime-补集转化+容斥原理+质因数分解
    【HDU5072】Coprime-补集转化+容斥原理+质因数分解
    【NOI2011T1】兔农-矩阵快速幂+乘法逆元
    【NOI2011T1】兔农-矩阵快速幂+乘法逆元
  • 原文地址:https://www.cnblogs.com/liuwenxu/p/5392010.html
Copyright © 2020-2023  润新知