using System;
using System.Collections.Generic;
using System.Text;
using System.Collections.Generic;
using System.Text;
namespace Cat
{
class Program
{
static void Main(string[] args)
{
Cat cat = new Cat("猫");
Mouse mouse = new Mouse("老鼠", cat);
Person person = new Person("主人", cat);
{
class Program
{
static void Main(string[] args)
{
Cat cat = new Cat("猫");
Mouse mouse = new Mouse("老鼠", cat);
Person person = new Person("主人", cat);
cat.OnEvent();
}
}
}
}
//定义事件参数类
public class MyEventArgs : EventArgs
{
private string message;
public MyEventArgs(string message)
{
this.message = message;
}
public class MyEventArgs : EventArgs
{
private string message;
public MyEventArgs(string message)
{
this.message = message;
}
public override string ToString()
{
return message + "叫了!";
}
}
{
return message + "叫了!";
}
}
//定义事件发送者(事件的触发者(猫))
public class Cat
{
private string name;
public Cat(string name)
{
this.name = name;
}
//定义委托
public delegate void MyDelte(object sender, MyEventArgs even);
public delegate void MyDelte(object sender, MyEventArgs even);
//定义事件
public event MyDelte myEvent;
public event MyDelte myEvent;
//定义触发事件的方法
public void OnEvent()
{
if (this.myEvent != null)
{
MyEventArgs myArgs = new MyEventArgs(name);
Console.WriteLine(myArgs.ToString());
myEvent(this, myArgs); //执行事件
}
}
}
public void OnEvent()
{
if (this.myEvent != null)
{
MyEventArgs myArgs = new MyEventArgs(name);
Console.WriteLine(myArgs.ToString());
myEvent(this, myArgs); //执行事件
}
}
}
//定义事件的接收者
public class Mouse
{
private string name;
//注册事件
public Mouse(string name,Cat cat)
{
this.name = name;
cat.myEvent += new Cat.MyDelte(cat_myEvent);
}
public class Mouse
{
private string name;
//注册事件
public Mouse(string name,Cat cat)
{
this.name = name;
cat.myEvent += new Cat.MyDelte(cat_myEvent);
}
//事件的驱动程序
void cat_myEvent(object sender, MyEventArgs even)
{
Console.WriteLine(name + "逃跑!");
}
void cat_myEvent(object sender, MyEventArgs even)
{
Console.WriteLine(name + "逃跑!");
}
}
public class Person
{
private string name;
public Person(string name, Cat cat)
{
this.name = name;
cat.myEvent += new Cat.MyDelte(cat_myEvent);
}
//事件的驱动程序
void cat_myEvent(object sender, MyEventArgs even)
{
Console.WriteLine(name + "惊醒!");
}
}
void cat_myEvent(object sender, MyEventArgs even)
{
Console.WriteLine(name + "惊醒!");
}
}
}