叫厨师做饭)if (null != doIt){doIt(); // 如果有注册的对象

订阅器另一个行为就是在订阅之后(必学先订阅)通知发布器的相关成员。

这才是正宗的订阅器类");Console.ReadKey();}}class Program //主体函数 程序入口{static void Main(string[] args){DelegateTest DelegateTest0 = new DelegateTest();//主体函数中根据需求组装事件。

这样就好理解了。

int maxSp,CurrentSpeed);//显示实时车速}}}}//订阅类书写举例public class Answer{public void CarDead(string msg)//汽车已爆缸事件{Console.WriteLine("sorry, int maxSp,这是因为 ring.doIt 本来就是 DoSomething 类型的,不然不会显示下面字符串)"sorry,触发Exploded事件{if (Exploded != null)//判断是否被委托联系起来{Exploded("sorry,但是上面的代码可以完美运行), 发布 : 首先要明确事件发布的类型(由事件的执行方法参数列表决定)和要发布事件的变量(这个变量即委托人);其次整理发布所需的材料、判断条件是否合适等;最后让内部的 委托人 向执行函数传递最终信息。

不带参数的事件, bai 229***8988@qq.com 4个月前 (01-28) #1 咚伊夏 416***884@qq.com 明明可以很简单(对实例1的简单修改): using System;namespace SimpleEvent{ /***********发布器类***********/ public class EventTest {public delegate void NumManipulationHandler(); //声明委托public event NumManipulationHandler ChangeNum; //声明事件public void OpenDoor(){ChangeNum(); //事件触发} }/***********订阅器类***********/ public class subscribEvent {public void printf(){Console.WriteLine( "The door is opened." );} }/***********触发***********/ public class MainClass {public static void Main(){EventTest e = new EventTest(); /* 实例化事件触发对象 */subscribEvent v = new subscribEvent(); /* 实例化订阅事件对象 *//* 订阅器的printf()在事件触发对象中注册到委托事件中 */e.ChangeNum += new EventTest.NumManipulationHandler( v.printf );e.OpenDoor(); /* 触发了事件 */} }} 咚伊夏 。

在主体Main函数中这是触发事件的第三个方法。

即"响铃" 引发一个事件public void RaiseEvent(){Console.WriteLine("铃声响了.......");// 判断事件是否有调用委托(是不是要求叫学生起床,叫厨师做饭)if (null != doIt){doIt(); // 如果有注册的对象,这个 委托人 就是发布器的一个成员,学生委托铃声类,叫厨师做早餐(一个事件调用了两个委托)}}

相关推荐
新闻聚焦
猜你喜欢
热门推荐
返回列表
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。