一、什么是事件?
答:是委托的另一种用法,是一种设计模式,一种被event关键字修饰的特殊方法,或者 方法的返回值类型是委托类型为事件
二、为什么使用事件?
答:用来实现任意两个或多个方法的联动调用,即某个方法自动会调用另一个方法,与委托的多播执行类似,但实现方法不同
三、什么时候使用事件?
答:需要方法(行为,功能)之间有关联时可用
四、用C#实现事件
步骤1:先定义一个委托类型
步骤2:定义事件(定义端 ) -- public event【可省略】 委托类型 事件名
步骤3:注册事件(调用端)--事件源对象.事件+=new 委托类型(响应方法)
步骤4:触发事件(定义端)-- 事件在类内部触发,触发代码与委托调用一样
步骤5:用对象或类直接调用触发事件
注意事项:
+=是表示注册事件,-=表示注销事件。
事件源为定义事件的类,响应者为被触发的方法所在的类。
事件源也可以是响应者。
完整代码
public delegate void oneUse(string name); //委托
public class My //定义端(事件源
{
public event oneUse hit; //定义一个事件方法
public void Hit_action(string name) //触发事件方法,同时实现事件方法,固定格式
{
if(hit != null)
{
Console.WriteLine("挥拳打击{0}", name);
hit(name); //触发事件代码
}
}
}
public class You //响应者
{
public static void Dead(string name) //响应方法,与事件方法的委托类型的签名一样
{
Console.WriteLine("{0}死亡",name);
}
}
public class MainTest //调用端
{
static void Main(string[] ares)
{
My me = new My() ;
me.hit += new oneUse(You.Dead);//注册事件,要求注册的方法与委托签名一样
me.Hit_action("张三"); //调用事件,
}
}
五、事件的特点
方法是偶尔触发的,对其他方法有影响,事件发生后,其他对象做出响应
可用约束“调用委托”,起到保护作用,防止委托存储的方法被多次调用所产生的冲突
六、小结
事件就是方法触发另一个方法的操作,就是使用步骤比较麻烦,在unity软件中,它自身已经创建好了一些事件,可以直接调用。看到这里,不难发现,面向对象的多态,比如继承,方法重写,隐藏,接口,委托,事件等,都是对方法的使用进行不同操作,这些都是一个个技术手段,所以开发过程中,手段只是工具,真正重要的是运用手段的思路,想法