十六、事件 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、为什么要事件

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

相关内容

热门资讯

国庆黄金周景区情况:大同古城半... 文| 芙昕 编辑 | 芙昕 国庆长假,很多人都计划着出门走走,可一到了那些热门景点,看到的往往不是山...
来大东北一共分两步:先“冷藏”... 还在被“东北=冰窖”的刻板印象吓退? 南方的“小土豆”们 别急着裹紧小棉袄 这个冬天 让“气候缓冲带...
第三届“长城之约”活动在河北涞... 11月15日,第三届"长城之约"全球推广活动暨世界文化遗产对话15日在河北省保定市涞源县启幕。 本次...
巴厘岛:时光在此停驻 (自由行... 曾几何时,世人只知巴厘岛而不知印尼。巴厘岛的美太过耀眼,以至于人们常常忘记——它只是印尼万千岛屿中最...