使用自带的EventHandler
using System;
namespace Event2
{
class GroupOwner
{
public string str;
public event EventHandler broadCastEvent;
public void broadCastMsg(string msg)
{
if (broadCastEvent != null)
{
str = msg;
broadCastEvent(this, new EventArgs());
}
}
}
class Member
{
private string _name;
public Member(string name)
{
_name = name;
}
public void ReceiveMsg(Object s,EventArgs e)
{
GroupOwner owner = (GroupOwner)s;
String msg = owner.str;
Console.WriteLine($"【{_name}】has received the message-------->{msg}");
}
}
class Program
{
static void Main(string[] args)
{
GroupOwner owner = new GroupOwner();
Member m1 = new Member("Java");
Member m2 = new Member("C#");
Member m3 = new Member("C/C++");
Member m4 = new Member("Js");
owner.broadCastEvent += new EventHandler(m1.ReceiveMsg);
owner.broadCastEvent += new EventHandler(m2.ReceiveMsg);
owner.broadCastEvent += new EventHandler(m3.ReceiveMsg);
owner.broadCastEvent += new EventHandler(m4.ReceiveMsg);
owner.broadCastEvent -= new EventHandler(m1.ReceiveMsg);
owner.broadCastMsg("Hello,EveryBody,all of you have a day off tomorrow");
}
}
}

扩展EventArgs
using System;
namespace Event2
{
class GroupOwner
{
public delegate void MyHandler(Object o, MyEventArgs args);
public event MyHandler broadCastEvent;
public void broadCastMsg(string msg)
{
if (broadCastEvent != null)
{
int no = new Random().Next();
string info = msg;
string sender = "群主";
DateTime t = DateTime.Now;
Msg message = new Msg(no,info,sender,t);
broadCastEvent(this, new MyEventArgs(message));
}
}
}
class Member
{
private string _name;
public Member(string name)
{
_name = name;
}
public void ReceiveMsg(Object s, MyEventArgs e)
{
int no = e.message.getNo();
string info = e.message.getInfo();
string sender = e.message.getSender();
DateTime t = e.message.getTime();
Console.WriteLine($"【{sender}: {info}\t{t}");
Console.WriteLine($"({_name} received successfully!)\r\n");
}
}
class MyEventArgs : EventArgs
{
public Msg message;
public MyEventArgs(Msg msg)
{
message = msg;
}
}
class Msg
{
private int no;
private string msgInfo;
private string sender;
private DateTime time;
public Msg(int n,string content,string s,DateTime t)
{
no = n;
msgInfo = content;
time = t;
sender = s;
}
public int getNo() => no;
public string getInfo() => msgInfo;
public string getSender() => sender;
public DateTime getTime() => time;
}
class Program
{
static void Main(string[] args)
{
GroupOwner owner = new GroupOwner();
Member m1 = new Member("张飞");
Member m2 = new Member("关羽");
Member m3 = new Member("刘备");
Member m4 = new Member("赵子龙");
owner.broadCastEvent += new GroupOwner.MyHandler(m1.ReceiveMsg);
owner.broadCastEvent += new GroupOwner.MyHandler(m2.ReceiveMsg);
owner.broadCastEvent += new GroupOwner.MyHandler(m3.ReceiveMsg);
owner.broadCastEvent += new GroupOwner.MyHandler(m4.ReceiveMsg);
owner.broadCastEvent -= new GroupOwner.MyHandler(m1.ReceiveMsg);
owner.broadCastMsg("Hello,EveryBody,all of you have a day off tomorrow");
Console.ReadKey();
}
}
}
