十六、事件 event
admin
2024-03-25 23:18:24

文章目录

  • 1、事件是什么
  • 2、事件的使用
  • 3、为什么要事件

1、事件是什么

点击访问官网 事件

  • 事件是基于委托的存在
  • 事件是委托的安全包裹,让委托的使用更安全
  • 事件是一种特殊的变量类型
  • 类 或对象可以通过事件向其他类或对象通知发生的相关事情。 发送(或引发)事件的类称为“发布者”,接收(或处理)事件的类称为“订阅者”
  • 事件具有以下属性:
    • 发行者确定何时引发事件;订户确定对事件作出何种响应
    • 一个事件可以有多个订户。 订户可以处理来自多个发行者的多个事件
    • 没有订户的事件永远也不会引发
    • 事件通常用于表示用户操作,例如单击按钮或图形用户界面中的菜单选项
    • 当事件具有多个订户时,引发该事件时会同步调用事件处理程序。 若要异步调用事件,请参阅 “使用异步方式调用同步方法”
    • 在 .NET 类库中,事件基于 EventHandler 委托和 EventArgs 基类

2、事件的使用

  • 关键字:event
  • 语法:访问修饰符 event 委托类型 事件名;
  • 事件的使用
    • 作为类的成员变量
    • 委托怎么用,事件就怎么用
  • 事件相对于委托的区别
    • 不能在自身类外部赋值
    • 不能在自身类外部调用
      • 虽然不能在自身类外部赋值调用,但是可以使用 += 和 -= 进行加减
    • 事件不能当临时变量在方法内使用
  • 注意:事件只能作为成员存在于类、接口、结构体内
class Test
{// 委托public Action MyFun;// 事件public event Action MyEvent;public Test() {// 两者赋值一致MyFun = null;MyEvent = null;MyFun = TestFun;MyEvent = TestFun;// 两者增减一致MyFun += TestFun;MyEvent += TestFun;MyFun -= TestFun;MyEvent -= TestFun;// 调用一致MyFun.Invoke();MyEvent.Invoke();MyFun();MyEvent();}public void TestFun(){Console.WriteLine("666");}
}

3、为什么要事件

  • 防止外部随意置空委托
  • 防止外部随意调用委托
  • 对委托进行一次封装,使其更安全

相关内容

热门资讯

山水皆有情!丽江两山一江的千年... 去过丽江、走过虎跳峡的人,大概率都听过哈巴雪山和金沙江的传说。很多人站在峡谷之下,望着奔腾不息的金沙...
活力中国调研行丨“殷”你而来 ... 9月12日,游客在殷墟博物馆“甲骨文展厅”内参观。位于河南省安阳市的殷墟博物馆新馆是首个全景式展现商...
浦江之夜赴美好相逢,第37届上... 9月12日晚,黄浦江畔灯火璀璨,第37届上海旅游节大巡游在外滩中山东一路上演。不少观众早早便来到外滩...
美丽中国丨秋韵紫鹊界 梯田入画... 这是9月11日拍摄的紫鹊界梯田(无人机照片)。 金秋九月,湖南省娄底市新化县紫鹊界梯田稻谷渐次成熟。...
中国之巅奏响《共同的节日》,千... 千吨阻尼器,“迎世赛、游上海旅游节”。9月13日,由上海市文化和旅游局指导推出上海旅游·会客│巅峰之...