zoukankan      html  css  js  c++  java
  • C#基础:委托之Action<T>和Func<T>的用法

     我们在使用委托的过程中,除了为每个参数和返回类型定义一个委托之外,也就是说为每一个方法(作为参数的方法)定义一个委托,我们还可以使用Action<T>和Func<T>委托。

      泛型Action<T>委托表示引用一个void返回类型的方法。Action<T>委托类存在不同的变体,可以传递至多16种不同的参数类型,没有泛型参数的Action类可以调用没有参数的方法。例如:Action<in T1>调用带一个参数的方法,Action<in T1,in T2>调用带两个参数的方法等

      Func<T>的用法和Action<T>用法类似,但是Func<T>表示引用一个带返回类型的方法,Func<T>也存在不同的变体,至多可以传递16个参数类型和1个返回类型,例如:Func<in T1,out Resout>表示带一个参数的方法,Func<in T1,in T2,out Resout>表示调用带两个参数的方法。

      下面就直接给一个Action<T>和Func<T>的例子

    复制代码
    using System;
    namespace DelegateFuncAction
    {
        class Program
        {
            static void Main(string[] args)
            {
                Func<double, double,double> DoAddtion = calculate.addtion;
                double result = DoAddtion(20, 30);
                Console.WriteLine("Func带返回参数委托做加法结果为:{0}",DoAddtion(10,20));
                calculate c=new calculate();
                Action<double, double> DoSubstraction = c.substraction;
                DoSubstraction(90, 20);
            }
        }
        class calculate
        {
            public static double addtion(double x, double y)
            {
                return x + y;
            }
            public void substraction(double x, double y)
            {
                Console.WriteLine("Action不带返回参数委托做减法结果为:{0}",x-y);
            }
        }
    }
    复制代码

    输出结果:

    Func带返回参数做加法结果为:30
    Action不带返回参数委托做减法结果为:70
  • 相关阅读:
    使用NDK编译 libyuv <转>
    x264中重要结构体参数解释,参数设置,函数说明 <转>
    x264的一些参数设置对编码效率的影响
    首都儿研所开钙片!!!
    Android 媒体编解码器(转)
    opengl版本和扩展
    ffmpeg一揽子
    Android 使用SWIG生成Jni代码<转>
    CF 19D 线段树+set压缩坐标轴+离散化map
    android4.0 FaceDetection笔记
  • 原文地址:https://www.cnblogs.com/asdyzh/p/9794451.html
Copyright © 2011-2022 走看看