一个委托的例子

    class Program
    {
        // 定义委托处理程序
        public delegate void PlayGameHandler(object sender);

        static void Main(string[] args)
        {
            Console.WriteLine("场景开始了....");
            Console.WriteLine(Environment.NewLine);

            Zhang zhang = new Zhang();
            Wang wang = new Wang();

            zhang.PlayGame += new PlayGameHandler(wang.GetbackMoney);  //指定监视
            zhang.PlayGame += new PlayGameHandler(wang.GiveMoneyBackToZhang); 
            zhang.PlayCS();

            Console.WriteLine(Environment.NewLine);
            Console.WriteLine("场景结束...");
            Console.ReadLine();
        }

        // 负责扣钱的人
        internal class Wang
        {
            public Wang()
            {
                Console.WriteLine("小王上班了...");
            }

            public void GetbackMoney(object sender)
            {
                Console.WriteLine(Environment.NewLine);
                Console.WriteLine("小王:好小子,上班时间胆敢玩游戏...");
                Console.WriteLine("小王:看看你小子有多少钱...");

                Zhang f = (Zhang)sender;  //这句很关键

                Console.WriteLine("小张的钱: " + f.Money.ToString());
                Console.WriteLine("开始扣钱......");

                System.Threading.Thread.Sleep(1000);
                f.DecreaseMoney();

                Console.WriteLine("小张:可怜啊,现在只剩下" + f.Money.ToString() + "了");
            }

            public void GiveMoneyBackToZhang(object sender)
            {
                Console.WriteLine(Environment.NewLine);
                Console.WriteLine("小王:哥们,还是把钱还给你吧...");
                Console.WriteLine("小王:咱俩谁跟谁啊...");

                Zhang f = (Zhang)sender;  //这句很关键

                Console.WriteLine("小张的钱: " + f.Money.ToString());
                Console.WriteLine("开始加钱......");

                System.Threading.Thread.Sleep(1000);
                f.IncreaseMoney();

                Console.WriteLine("小张:啊哈,现在又有" + f.Money.ToString() + "了");
            }
        }

        internal class Zhang
        {
            // 先定义一个事件,这个事件表示“Zhang”在玩游戏。
            public event PlayGameHandler PlayGame;

            // 保存Zhang钱的变量
            private int m_Money;

            public int Money
            {
                get { return m_Money; }
            }

            public Zhang()
            {
                m_Money = 1000; // 构造函数,初始化Zhang的钱。
                Console.WriteLine("小张上班了,小张昨天得到1000块钱奖励....");
            }

            public void DecreaseMoney()
            {
                m_Money -= 500;
            }

            public void IncreaseMoney()
            {
                m_Money += 500;
            }

            public void PlayCS()
            {
                Console.WriteLine(Environment.NewLine);
                Console.WriteLine("小张开始玩游戏了.....");
                Console.WriteLine("小张:CS好玩,哈哈哈! 我玩.....");

                System.Threading.Thread.Sleep(1000);
                System.EventArgs e = new EventArgs();

                OnPlayGame();
            }

            protected virtual void OnPlayGame()
            {
                if (PlayGame != null)
                {
                    PlayGame(this);
                }
            }
        }

    }

 参考网址:http://topic.csdn.net/u/20090627/17/ae3a38bb-cf15-4c73-9a30-1e1260a15237.html?60334

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值