zoukankan      html  css  js  c++  java
  • C# 委托

    首先创建一个很简单的委托~
    public delegate void DoIt(string str);
    然后创建一个委托引用~

    public DoIt _DoIt;

    之后就是在你程序需要触发回调函数的地方去执行这个委托~

    if (_DoIt != null) //执行委托需要判断是否为空,如果没有将对应签名的方法存入委托,直接执行会报错
    {
    _DoIt("测试");
    }
    最后就是去为委托添加回调方法,签名必须一样~
    _DoIt = (str) => //这里是一个匿名函数,当然也可以直接传方法
    {
    //这里就是委托触发时执行的代码

    };
    唔~看不懂请追问~

    ========================================================================
    C# 里面这个东西一般指某个委托.其实也可以是接口.

    delegate void WorkDone();
    void Working(WorkDone callBack){
    //Working code.
    //当工作完成的时候执行这个委托.
    callBack();
    }
    void WorkDoneHandler(){
    //Do something other.
    }
    void Do(){
    WorkDone callBack = new WorkDone(WorkDoneHandler);
    Working(callBack);
    }

    也就是相当把某个方法(WorkDoneHandler())当作参数传递给另外一个方法(Working(WorkDone callBack)).
    这样做的好处在于,可以动态的指定执行哪个方法.
    比如在Do()方法中,我们指定的callback 是WorkDoneHandler 当然也可以是其它匹配的方法. 而Working()方法 更本不需要知道自己最后执行的是哪个Handler.
  • 相关阅读:
    Z算法
    CodeForces 939F
    CodeForces 15D
    ZOJ 3408
    CodeForces 962D
    CodeForces 29D
    CodeForces 1129C
    RabbitMQ.NET In Window Service
    封装RabbitMQ.NET Library 的一点经验总结 转载
    DotNetBar 使用笔记
  • 原文地址:https://www.cnblogs.com/aiqingqing/p/4413971.html
Copyright © 2011-2022 走看看