委托和事件的应用,模拟一个战斗机..
时间:2010-09-14 来源:legend050bbb
代码说明很清晰了,咱在这就不说什么了……
- //#define delegateDO
- #define eventDO
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Timers;
- //我的战斗机被偷????不怕,我有防盗器(委托和事件的应用,模拟一个战斗机防盗器)
- //(这次换战斗机了。。。。。。。。)
- //之前写过一个汽车防盗器,其实一样的……
- //
- namespace ExCmd
- {
- class Program
- {
- static void Main(string[] args)
- {
- zhandouji zdj = new zhandouji();
- //本大爷知道飞机的启动密码,就是snowleung
- zdj.fei("snowleung");
- //某来来了个小偷,居然想偷我的战斗机
- //可是他悲剧的不知道启动密码
- zdj.fei("张三");
- Console.ReadKey();
- }
- }
- //英文不好,就写战斗机……
- public class zhandouji
- {
- delegate void baojing();
- event baojing EventBaojing;
- baojing bj;
- public zhandouji()
- {
- #region 事件实现
- //其实这一块就是个什么链式委托?不是很明白那个名字
- //后面不仅仅可以加熄火。
- //还能自毁
- EventBaojing += new baojing(fangdaoqi);//咱们启动防盗器
- EventBaojing += new baojing(shutdown);//还能自动熄火
- EventBaojing += new baojing(zihui);
- #endregion
- #region 委托实现
- //其实这里也可以用以下代码,效果一样……
- bj = new baojing(fangdaoqi);
- bj += new baojing(shutdown);
- bj += new baojing(zihui);
- #endregion
- }
- void zihui()
- {
- Console.WriteLine("可怜的娃,战斗机还有自毁系统……");
- //往后还可以加上自毁倒计时……
- //Timer tmr = new Timer(1);
- }
- public void fei(string cmd)
- {
- switch (cmd)
- {
- case "snowleung":
- Console.WriteLine("战斗机起飞中。。。");
- break;
- default:
- //请查看第一行的define……决定用什么方法实现
- #if delegateDO
- EventBaojing();
- #endif
- #if eventDO
- bj();
- #endif
- break;
- }
- }
- private void fangdaoqi()
- {
- Console.WriteLine("防盗报警!你的战斗机未经授权起飞了!系统自动关闭引擎中...");
- }
- public void shutdown()
- {
- Console.WriteLine("已经关闭引擎!");
- }
- }
- }
相关阅读 更多 +