加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

.NET中的影子事件

发布时间:2020-12-17 00:11:04 所属栏目:大数据 来源:网络整理
导读:在VB.NET中有一个关键字’shadows’.假设我有一个名为’Jedi’的基类和一个名为’Yoda’的派生类,它继承自’Jedi’.如果我在’Jedi’中声明了一个名为’ForcePush’的方法,并在’Yoda’中声明了阴影,那么当在’Yoda’类的实例上调用该方法时,它将忽略基类实
在VB.NET中有一个关键字’shadows’.假设我有一个名为’Jedi’的基类和一个名为’Yoda’的派生类,它继承自’Jedi’.如果我在’Jedi’中声明了一个名为’ForcePush’的方法,并在’Yoda’中声明了阴影,那么当在’Yoda’类的实例上调用该方法时,它将忽略基类实现并使用派生类的实现.但是,如果我有一个’Yoda’的实例,它最初被声明为’Jedi’类型,即Dim j为Jedi = new Yoda(),并在实例上调用’ForcePush’方法,它将使用Jedi实现.

现在假设我有一个名为’UsingForce’的事件,当调用’ForcePush’方法时会引发该事件,并且我在派生类中隐藏事件(这是因为’Yoda’有一个接口’IForcePowers’声明这个事件)每个班级都会举起各自的活动.

如果我有一个’Yoda’实例被声明为’Jedi’类型(如上所述)并且我在’Jedi’的’UsingForce’事件上放置一个事件处理程序,然后”中调用’ForcePush’方法’尤达的课程,这个活动处理程序会到达吗?

在VB.NET中使用shadows关键字意味着您声明一个存在于任何继承层次之外的全新成员.这就是为什么关键词(和相关的练习)通常被认为是“臭”(虽然有些人反对这个特定的术语,我觉得它很合适).这种“遮蔽事物”模式背后的原因是什么?这种方法通常用于没有其他方法可以完成所需的情况.继承和重写方法不是一种选择吗?

在任何情况下,如果你在较低的类中“遮蔽”事件,那么不,没有可能的方法让继承链的更远的类直接触发事件,因为他们不知道它甚至存在.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读