您的位置:首页 > 编程语言 > C#

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

2017-02-05 21:16 423 查看
看了波哥的博客,如醍醐灌顶,收获颇丰,照葫芦画瓢,自己写了一个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.扩展知识

委托可以实现设计模式之观察者模式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  delegate 委托