C#事件

/*作者:王俊杰
链接:https://www.zhihu.com/question/21638630/answer/32794112
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
*/

using System;

namespace 起床事件
{
    class 主程序
    {
        static void Main(string[] args)
        {
            /* 项目场景描述:
             * 我从明天早上开始要早起晨读,室友每天都七点起床晨跑,我告诉他明天起来的时候把我叫醒,并让我晨读
             * PS:还有个王八犊子非要跟我赌五毛我起不来,还让明天室友也叫他,见证我到底有没有起来
             */

            //首先你们三个得存在吧
            var 中国好室友 = new 室友();
            var 我 = new 要晨读的我();
            var 王八犊子 = new 王八犊子();

            //我先告诉室友:我要早起晨读
            中国好室友.叫别人起床该干嘛干嘛 += 我.起床晨读;
            //王八犊子来搅屎了
            中国好室友.叫别人起床该干嘛干嘛 += 王八犊子.赌五毛起不来;
            //于是第二天到了
            Console.WriteLine("闹铃:早上七点钟...");
            Console.WriteLine("系统提示:室友起床了!");
            Console.WriteLine();
            中国好室友.起床晨跑去();
            Console.WriteLine();
            Console.WriteLine("==========全剧终==========");

            Console.ReadLine();
        }

        public delegate void 这是一个委托();

        public class 室友
        {
            public event 这是一个委托 叫别人起床该干嘛干嘛;

            public void 起床晨跑去()
            {
                Console.WriteLine("室友:喂,起床啦!");
                Console.WriteLine("");
                if (叫别人起床该干嘛干嘛 != null) //如果有人委托我什么
                {
                    叫别人起床该干嘛干嘛();
                }
                Console.WriteLine("室友:完事走人,晨跑去!");
            }

        }

        public class 要晨读的我
        {
            public void 起床晨读()
            {
                Console.WriteLine("我:哦,起来了!!!");
                Console.WriteLine("我:一二三四五,上网看知乎,刷完知乎再晨读!");
                Console.WriteLine();
            }
        }

        public class 王八犊子
        {
            public void 赌五毛起不来()
            {
                Console.WriteLine("王八犊子:五毛拿走,劳资要碎觉!");
                Console.WriteLine();
            }
        }
    }

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值