c#回调浅析(委托、接口回调)

上传人:gg****m 文档编号:204549524 上传时间:2021-10-26 格式:DOC 页数:4 大小:79.50KB
返回 下载 相关 举报
c#回调浅析(委托、接口回调)_第1页
第1页 / 共4页
c#回调浅析(委托、接口回调)_第2页
第2页 / 共4页
c#回调浅析(委托、接口回调)_第3页
第3页 / 共4页
c#回调浅析(委托、接口回调)_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《c#回调浅析(委托、接口回调)》由会员分享,可在线阅读,更多相关《c#回调浅析(委托、接口回调)(4页珍藏版)》请在金锄头文库上搜索。

1、C#回调浅析(委托、接口回调)说到c#冋调,通常情况下,指的是某个委托或者接口冋调。现将从网上备位前辈那里学 得的一些经验加以整理,形成一个稍全面一些的文章,希望对大家有所帮助!一、 委托先看一段代码:/定义委托delegate void WorkDone();class Programstatic void Main(string args)Do();Console. ReadLine();public static void Do()/首先给callback委托赋值WorkDone callback = new WorkDone(WorkDoneIIandler); /将callback作

2、为参数Working(callback);public static void Working(WorkDone callBack)/当工作完成的时候执行这个委托callBack();public static void WorkDoneHandler()Console. WriteLine(DateTime. Now);上面的代码中,将方法WorkDoneHandler()作为参数,传递给了另一个方法 Working(WorkDone callBack),这样做的好处在于,可以动态的指泄执行哪个方法。比如在Do()方法中,我们指定的callback是WorkDoneHandler当然也可以是

3、其它匹配的方法。而 Working 0方法根木不需要知道白己最示执行的是哪个Ilancller0二、接口回调通常情况下,我们创建一个对象,并马上肓接去使用它的方法。然而,在有些情况下, 希望能在某个场景出现后或条件满足时才调用此对象的方法。冋调就可以解决这个“延迟调 用对象方法”的问题。这个被调用方法的对彖称为I川调对象。实现冋调的原理简介如下:首先创建一个冋调对彖,然示再创建一个控制器对象,将冋调对彖需要被调用的方法告 诉控制器对象。控制器对象负责检杳某个场景是否出现或某个条件是否满足。当此场景出现 或此条件满足时,白动调用回调对象的方法。以下为C#实现冋调的一个小例子:using Syst

4、em;using System.Collections. Generic;using System. Text;namespace ConsoleApplicationlclass Programstatic void Main(string args)创建一个控制器对象,将提供给它的冋调对象传入 Controller obj = new Controller (new CallBackO); /启动 obj. Star ();public interface IBackvoid run ();public class CalIBack : IBackpublic void run()/为了简

5、洁这里只是显示下时间System. Console. WriteLine(DateTime. Now);public class Controllerpublic IBack CallBackObj = null;/这里引用冋调对象public Controller(IBack obj)this. CallBackObj = obj;public void Star()Console. WriteLine(/x敲键盘任意键就显示当前的时间,直到按ESC退 出);while (Console. ReadKey(true). Key != ConsoleKey. Escape)CallBackOb

6、j. run();可以看到,当示例程序运行时,何时调用CalIBack对象的run()方法是由用户决定的, 用户每敲一个键,控制器对象就调用一次CalIBack的mn()方法。这个示例中实现冋凋的关 键在于IBack接口的引入。如果不丿IJ IBack接口,而育接使川SllBdck对象,一样可以实现同样的效果,如下: public class Controllerpublic CalIBack CallBackObj = null;/冋调对象方法的引用public Controller(Cal1 Back obj)this. CallBackObj = obj;public void Star

7、()Console. WriteLine(”敲键盘任意键就显示当前的时间,直到按ESC退 出.);while (Console. ReadKey(true). Key != ConsoleKey. Escape)CallBackObj. run();但仔细思考,这样做的结果就使Controller类与Cal IBack对彖绑定在起,力一如果需 要调用其他类型的对象,则必须修改Controller类的代码。如果Controller类接收的是一个抽象的接口变量Iback,贝U任何实现了该接口的对象部 可以被Controller类对象所I川调,Controller类的代码就再不用被修改,保证了代码对环 境的适应性,无疑是一个很好的解决方案。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号