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.
原文地址:https://www.cnblogs.com/aiqingqing/p/4413971.html