今天学到 ”多播委托和事件“ 了,讲一个猫和老鼠的故事:有一个房子里面住着两只猫(Tom、Tony)、老鼠和主人,晚上的时候老鼠会瞎跳,这声音会吵醒猫,而猫"喵喵"叫会吵醒主人,用编程如何实现。
###########################################################
我定义了三个类:Host, Cat, Mouse
并用委托建立了他们之间的联系
###############################
[C#] 纯文本查看 复制代码 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DelegateSample2
{
class Program
{
/*
* 将猫叫作为中间介质,将哪几只猫在叫传给主人,再将主人醒来的方法传给老鼠,这样老鼠跳的时候
* 就能实现多只猫在叫,而只吵醒主人一次
*
*/
static void Main(string[] args)
{
Host host = new Host();
Mouse mouse = new Mouse();
Cat Tom = new Cat() { Name = "Tom"};
Cat Tony = new Cat() { Name = "Tony" };
host.CatYell += Tom.Yell; //Tom猫叫传给主人的多播委托
host.CatYell += Tony.Yell; // Tony猫叫的方法传给主人的多播委托CatYell
mouse.HostWake += host.Wake; //将主人醒来的方法地址传给老鼠的HostWake委托
mouse.Jump(); //老鼠跳
Console.Read();
}
}
}
//猫类
class Cat
{
public string Name { set; get; }
public void Yell()
{
Console.Write(this.Name);
Console.WriteLine("猫在叫!");
}
}
//鼠类
class Mouse
{
public event Action HostWake; //实现先猫叫再主人醒来
public void Jump()
{
Console.WriteLine("老鼠跳!");
HostWake();
}
}
//主人类
class Host
{
public event Action CatYell; //实现多只猫叫
public void Wake()
{
CatYell();
Console.WriteLine("主人醒来!");
}
}
自学C#也是很累啊,希望能认识同道中人相互帮助,一起进步!!!^_^
|