016 事件
2016-06-12 21:47:56 0 举报
AI智能生成
016事件是一个神秘的事件,发生在一个遥远的星球上。这个星球上的居民们过着平静的生活,直到有一天,他们发现了一颗巨大的陨石正在接近他们的家园。居民们立刻行动起来,试图阻止陨石撞击他们的星球。他们使用最先进的科技和武器,与陨石展开了一场激烈的战斗。最终,他们成功地摧毁了陨石,拯救了自己的家园。这场胜利让居民们欢欣鼓舞,他们为自己的勇敢和智慧感到自豪。从此以后,016事件成为了这个星球上永恒的传说。
作者其他创作
大纲/内容
事件和委托相似
概念:事件就好像被简化的针对特殊用途的委托,注册到事件上的方法会在事件触发时被调用
注意
触发(raise)事件:调用(invoke)或触发(fire)事件的属于。当事件被触发时,所有注册到它的方法都会被依次调用
发布者(publisher): 让事件被其他类或结构可见并使用的类或结构
订阅者(subscriber):把事件和发布者关联注册的类或结构
事件处理程序(event handler):注册到事件的方法,可以在事件所在的类或结构中,或者在不同的类或者结构中。
事件的私有委托
事件提供了对它的私有控制委托的结构化访问
与委托中的其他操作不一样,对于事件我们只可以添加、删除或者调用事件处理程序
事件被触发时,它调用委托来依次调用调用列表中的方法
事件的源代码组成(5类)
委托类型声明
事件注册
发布者类
事件声明
事件是成员
事件不是类型,所以不能使用对象创建表达式(new表达式)来创建它的对象
由于事件是成员:
它必须声明在类或结构中,和其他成员一样
不能再一段可执行代码中声明时间
事件成员被隐式自动初始化为null
触发事件的代码
订阅者类
事件处理程序声明
触发事件
触发事件过程
在出发事件之前先和null作比较,从而查看是否包含任何时间处理程序
触发事件本身看起来像调用函数一样
使用事件名称,后面跟的参数列表包含在圆括号中
参数列表必须匹配时间的委托类型
要点
发布者类有一个作为成员的事件
类包含了触发事件的代码
订阅事件
添加事件处理程序
使用+=运算符来为事件增加事件处理程序
要为事件添加事件处理程序,处理程序必须有和事件委托一致的返回类型和签名
事件方法组成:
实例方法
静态方法
匿名方法
Lambda表达式
移除事件处理程序:使用 -=运算符从事件移除一个事件处理程序
标准事件的用法
Event-Handler委托类型结构:
第一个参数用来保存触发事件的对象的引用。由于是object类型的,所以可以匹配任何类型的实例
第二个参数用老保存有关状态对于应用程序来说是否合适的状态信息
返回类型是void
EventArgs类
EventArgs被设计为不能传递任何数据。它用于不需要传递数据的事件处理程序——通常会被忽略
如果你希望传递数据,必须声明一个从EventArgs继承的类,使用合适的字段来保存需要传递的数据
为了向事件处理程序的第二个参数传入数据,需要声明一个派生自EventArgs的自定义类,类的名称应该以EventArgs结尾
自定义委托:
使用非泛型委托
使用自定义的类类型创建一个新的自定义委托
在时间代码的其他部分中使用更新的委托名称
使用泛型委托
在方括号中放置自定义类
无论希望在哪里使用自定义委托类型的名称,都使用完整的字符串。
0 条评论
下一页