/*事件*/
public delegate void TimeEventHandler(string s);//委托声明
class MyTime
{
public event TimeEventHandler Timer;//声明事件
public void OnTimer(string s)
{
if (null != Timer)
{
Timer(s);//引发事件
}
}
}
class ProcessTime
{
//事件处理
public void GenerateTime(string s)
{
Console.WriteLine("Hello {0}! The time is {1} now", s, DateTime.Now);
}
}
class TestTime
{
public static void Main()
{
ProcessTime p = new ProcessTime();
MyTime t = new MyTime();
t.Timer+=new TimeEventHandler(p.GenerateTime);//把事件与事件处理联系起来
t.OnTimer("Peter");
Console.Read();
}
}
/*委托*/
delegate void TimeDelegate(string s);//委托声明
class MyTime
{
public static void HelloTime(string s)
{
Console.WriteLine("Hello {0}! The time is {1} now", s, DateTime.Now);
}
public static void GoodbyeTime(string s)
{
Console.WriteLine("Goodbye {0}! The time is {1} now", s, DateTime.Now);
}
public void SayTime(string s)
{
Console.WriteLine("{0}! The time is {1} now", s, DateTime.Now);
}
}
class TestDelegate
{
public static void Main()
{
//委托实例化,创建委托实例a,并封装静态方法HelloTime
TimeDelegate a = new TimeDelegate(MyTime.HelloTime);
Console.WriteLine("Invoking delegate a:");
//委托调用,相当于调用方法MyTime.Hello("A")
a("A");
TimeDelegate b = new TimeDelegate(MyTime.GoodbyeTime);
Console.WriteLine("Invoking delegate b:");
b("B");
//委托实例c封装了两个方法HelloTime和GoodbyeTime
TimeDelegate c = a + b;
Console.WriteLine("Invoking delegate c:");
c("C");
c -= a;
Console.WriteLine("Invoking delegate c:");
c("C");
MyTime t = new MyTime();
TimeDelegate d = new TimeDelegate(t.SayTime);
Console.WriteLine("Invoking delegate d:");
d("D");
Console.Read();
}
}