
public delegate void DownStairDelegate();public class ToolMan{public string Name { get; set; }//事件--受限制的委托--event本质上还是委托//限制一:只能出现在+=、-=的左侧//限制二:只能在内部调用public DownStairDelegate DoList = null;public ToolMan(string name){Name = name;}public void DownStair(){Console.WriteLine("工具人"+Name+"下楼了");if (DoList != null){DoList();}}}
using System;namespace test06
{public class LazyMan{public string Name { get; set; }public LazyMan(string name){Name = name;}public void TakeFood(){Console.WriteLine("给"+Name+"外卖");}public void TakePackage(){Console.WriteLine("给"+Name+"快递");}}
}
using System;namespace test06
{internal class Program{//工具人下楼案例public static void Main(string[] args){var toolMan = new ToolMan("小明");var lazyMan = new LazyMan("小李");var lazyMan1 = new LazyMan("小王");var lazyMan2 = new LazyMan("小空");//注意 +=:添加委托 toolMan.DoList += lazyMan.TakeFood;toolMan.DoList += lazyMan1.TakePackage;toolMan.DoList += lazyMan2.TakeFood;toolMan.DoList();Console.WriteLine("===========");toolMan.DoList -= lazyMan2.TakeFood;//取消了小空的拿外卖的委托。toolMan.DoList();//=:覆盖之前的所有委托【但委托的总数变为1】Console.WriteLine("===========");toolMan.DoList = lazyMan2.TakeFood;toolMan.DoList();//工具人并准备没有下楼,但消息已经发布出去了//意思就是消息只有发布者去发布,其他人无权发布,只能订阅这些消息--不适合外部调用//解决//toolMan.DoList();}}
}


internal class Program{//工具人下楼案例public static void Main(string[] args){var toolMan = new ToolMan("小明");var lazyMan = new LazyMan("小李");var lazyMan1 = new LazyMan("小王");var lazyMan2 = new LazyMan("小空");//注意 +=:添加委托 toolMan.DoList += lazyMan.TakeFood;toolMan.DoList += lazyMan1.TakePackage;toolMan.DoList += lazyMan2.TakeFood;//toolMan.DoList();Console.WriteLine("===========");toolMan.DoList -= lazyMan2.TakeFood;//取消了小空的拿外卖的委托。//toolMan.DoList();//=:覆盖之前的所有委托【但委托的总数变为1】Console.WriteLine("===========");//toolMan.DoList = lazyMan2.TakeFood;//toolMan.DoList();//工具人并准备没有下楼,但消息已经发布出去了//意思就是消息只有发布者去发布,其他人无权发布,只能订阅这些消息--不适合外部调用//解决//toolMan.DoList();//事件情况下只有发布者发布了消息,才会执行委托toolMan.DownStair();}}


上一篇:怀念藏在衣柜里的冬天
下一篇:因为有用所以很优秀