/*作者:王俊杰
链接: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();
}
}
}
}