您现在的位置是:首页
>
讲故事儿童睡前故事 NET委托:一个关于C#的睡前故事[2]
NET委托:一个关于C#的睡前故事[2] 于是 彼得意识到接口虽然在很多情况都很有用 但是当用作事件时 粒度 不够好 他希望能够仅在别人想要时才通知他们 于是他决定把接口的方法分离为单独的委托 每个委
NET委托:一个关于C#的睡前故事[2]
于是 彼得意识到接口虽然在很多情况都很有用 但是当用作事件时 粒度 不够好 他希望能够仅在别人想要时才通知他们 于是他决定把接口的方法分离为单独的委托 每个委托都像一个小的接口方法 delegate void WorkStarted();delegate void WorkProgressing();delegate int WorkCompleted();class Worker { public void DoWork() { Console WriteLine( 工作: 工作开始 ); if( started != null ) started(); Console WriteLine( 工作: 工作进行中 ); if( progressing != null ) progressing(); Console WriteLine( 工作: 工作完成 ); if( pleted != null ) { int grade = pleted(); Console WriteLine( 工人的工作得分= + grade); } } public WorkStarted started; public WorkProgressing progressing; public WorkCompleted pleted;}class Boss { public int WorkCompleted() { Console WriteLine( Better ); return ; }}class Universe { static void Main() { Worker peter = new Worker(); Boss boss = new Boss(); peter pleted = new WorkCompleted(boss WorkCompleted); peter DoWork(); Console WriteLine( Main: 工人工作完成 ); Console ReadLine(); }}![讲故事儿童睡前故事 NET委托:一个关于C#的睡前故事[2]](http://img.zhputi.com/uploads/8699/8699cc08ff14287ddeeba81c1eaa1706143940.jpg)
静态监听者 这样 彼得不会再拿他老板不想要的事件来烦他老板了 但是他还没有把宇宙放到他的监听者列表中 因为宇宙是个包涵一切的实体 看来不适合使用实例方法的委托(想像一下 实例化一个 宇宙 要花费多少资源… ) 于是彼得就需要能够对静态委托进行挂钩 委托对这一点支持得很好 class Universe { static void WorkerStartedWork() { Console WriteLine( Universe notices worker starting work ); } static int WorkerCompletedWork() { Console WriteLine( Universe pleased with worker s work ); return ; } static void Main() { Worker peter = new Worker(); Boss boss = new Boss(); peter pleted = new WorkCompleted(boss WorkCompleted); peter started = new WorkStarted(Universe WorkerStartedWork); peter pleted = new WorkCompleted(Universe WorkerCompletedWork); peter DoWork(); Console WriteLine( Main: 工人工作完成 ); Console ReadLine(); }} lishixinzhi/Article/program/net/201311/15529
很赞哦! (1073)