C# 委托事件 -- 通俗入门

    xiaoxiao2021-03-26  34

    看了波哥的博客,如醍醐灌顶,收获颇丰,照葫芦画瓢,自己写了一个Demo程序,帮助理解。

    using System; using System.IO; public class DelegateTest { public delegate void PublishEventHandle(); /// <summary> /// 发布者 ——老师 /// Publisher —— Teacher /// </summary> public class Teacher { //建立事件,EventHandler是系统内部定义的标准事件委托 public event PublishEventHandle OnOrder; //public event EventHandler OnPublishEventHandle; public void publishInfo() { //MemoryStream memory = new MemoryStream(); FileStream file = new FileStream(@"D:\test.txt", FileMode.Create); StreamWriter writer = new StreamWriter(file);//实现对字符串的写入 writer.WriteLine("开始考试:" + DateTime.Now.ToLongTimeString()); writer.Close(); } //事件触发,必须在方法中 public void issue() { if (OnOrder !=null) { OnOrder(); } } } /// <summary> /// 订阅者——小明 /// Subscriber ---XiaoMing /// </summary> public class XiaoMing { public static void testInfo() { //MemoryStream memory = new MemoryStream(); FileStream file = new FileStream(@"D:\test.txt", FileMode.Append, FileAccess.Write); StreamWriter writer = new StreamWriter(file);//实现对字符串的写入 writer.WriteLine("小明开始考试:" + DateTime.Now.ToLongTimeString()); writer.Close(); } } /// <summary> /// 订阅者——小王 /// Subscriber ---XiaoWang /// </summary> public class XiaoWang { public static void testInfo() { //MemoryStream memory = new MemoryStream(); FileStream file = new FileStream(@"D:\test.txt", FileMode.Append, FileAccess.Write); StreamWriter writer = new StreamWriter(file);//实现对字符串的写入 writer.WriteLine("小王开始考试:" + DateTime.Now.ToLongTimeString()); writer.Close(); } } public static void Main() { Teacher MrLi = new Teacher(); MrLi.publishInfo(); MrLi.OnOrder += XiaoMing.testInfo; MrLi.OnOrder += XiaoWang.testInfo; MrLi.issue(); Console.ReadKey(); } }

    1.扩展知识

    委托可以实现设计模式之观察者模式

    转载请注明原文地址: https://ju.6miu.com/read-662064.html

    最新回复(0)