zoukankan      html  css  js  c++  java
  • 委托使用方式

    一、委托的声明方式

    1、delegate,例:public delegate int MethodtDelegate(int x, int y);表示有两个参数,并返回int型。
    2、Action,例:Action<int> action = new Action<int>(TempFunction);TempFunction为入参为一个int变量,且无返回值的方法。Action无返回值。
    3、Func,例:Func<int,int> func = new Func<int, int>(TempFunction);TempFunction为入参为一个int变量,返回值为一个int变量的方法。Func的最后一个参数为返回值,其余参数为入参。
    4、Predicate,例:Predicate<int> predicate = new Predicate<int>(TempFunction);TempFunction为入参为一个int变量,返回值为一个bool变量的方法。该方式只能有一个参数,且返回值为bool类型。
    Action、Func、Predicate都是系统定义好的委托,用起来省时省力。

    二、委托的增加与删除

    public delegate int MethodtDelegate(int x, int y);
    public MethodtDelegate MyDelegate;//MethodtDelegate 相当于Func<int,int,int>
    public void Main() {
        MyDelegate += Add;
        MyDelegate += Sub;
        MyDelegate -= Add;
        MyDelegate -= Sub;
    }
    private int Add(int a, int b) { return a + b; }
    private int Sub(int a, int b) { return a - b; }

    三、委托的调用

    1、将方法通过委托的方式作为一个参数传给另一个方法。

    public void Main() {
        int  c = CalculationNum(Add,1,2);
    }
    public int CalculationNum(Func<int, int,int> func, int a, int b)
    {
        return func(a,b);
    }
    private int Add(int a, int b) { return a + b; }

    2、定义一个方法集合,循环展示不同方法,产生的不同结果。

    public void Main() {
        var funcList = new List<Func<int, int, int>>();
        funcList.Add(Add);
        funcList.Add(Sub);
        CalculationNum(funcList, 1,2);
    }
    public void CalculationNum(List<Func<int, int,int>> funcList, int a, int b)
    {
        funcList.ForEach(v=> {
            Console.WriteLine(v(a,b));
        });
    }
    private int Add(int a, int b) { return a + b; }
    private int Sub(int a, int b) { return a - b; }

    四、委托的使用场景
      委托简单点说就是把一个方法当成一个参数来回传递借调。那它的使用场景是什么呢?不方便在当前逻辑关系中调用该方法的情景,大概率都适合加个委托。

  • 相关阅读:
    SpringBoot的@Import和@ImportResource
    SpringBoot引入其他配置文件
    SpringBoot加载application.properties配置文件的顺序
    Interceptor(拦截器)
    Filter(过滤器)
    ES6数组知识点,巧妙运用数组,对循环说88
    javase基础socket编程之局域网聊天,局域网文件共享
    【金三银四】缓存面试题-web层缓存
    MD5和SHA-1加密算法被我国密码学家王小云破解
    java中的ArrayList 的C语言实现版本。
  • 原文地址:https://www.cnblogs.com/liangshibo/p/12202579.html
Copyright © 2011-2022 走看看