什么是事件?我们可否看做是一个或者若干个动作?是可以的,比如射击事件,包含几个动作:1.子弹上膛2.拉枪栓3.瞄准4.扣扳机
一个事件包含几个动作,而每个动作都是一个函数,因为在C#中,函数就是做(),因此一个事件由几个函数组成。这么多函数,是用函数代表表示的。那么,什么是函数代表呢?可以这样认为,函数代表就是函数名。你说,函数的代表是不是函数名呢?当然是了。
因此,把一系列函数的代表加入一个事件,事件就成啦。这是关于事件和函数代表的关系。
事件可以看做是一系列函数即方法,那么方法是属于一个类的对象的。因此事件是在一个类中定义的。
using System;
namespace EventDemo
{
public delegate void Act();
class F {
public static void Load()
{
Console.WriteLine("load the ammos");
}
public static void Pull()
{
Console.WriteLine("pull the bolt");
}
public static void Aim()
{
Console.WriteLine("take aim at the enemy");
}
public static void Fire()
{
Console.WriteLine("pull the trigger");
}
}
class Soldier{
public event Act FireEvent;
public void Fire()
{
FireEvent();
}
}
class Program{
public static void Main(string[] args)
{
Soldier s = new Soldier();
s.FireEvent += F.Load;
s.FireEvent += F.Pull;
s.FireEvent += F.Aim;
s.FireEvent += F.Fire;
string cmd;
cmd = Console.ReadLine();
if (cmd == "fire")
s.Fire();
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}