A virtual event declaration specifies that the accessors of that event are
virtual. The virtual modifier applies
to both accessors of an event.
An abstract event declaration specifies that the accessors of the event are
virtual, but does not provide an
actual implementation of the accessors. Instead, non-abstract derived
classes are required to provide their own
implementation for the accessors by overriding the event. Because an
accessor for an abstract event declaration
provides no actual implementation, its accessor-body simply consists of a
semicolon.
Chapter 17 Classes
251
An event declaration that includes both the abstract and override modifiers
specifies that the event is
abstract and overrides a base event. The accessors of such an event are
also abstract.
Abstract event declarations are only permitted in abstract classes (§17.1.1.
1).
The accessors of an inherited virtual event can be overridden in a derived
class by including an event declaration
that specifies an override modifier. This is known as an overriding event
declaration. An overriding event
declaration does not declare a new event. Instead, it simply specializes
the implementations of the accessors of an
existing virtual event.
An overriding event declaration must specify the exact same accessibility
modifiers, type, and name as the
overridden event.
An overriding event declaration may include the sealed modifier. Use of
this modifier prevents a derived class
from further overriding the event. The accessors of a sealed event are also
sealed.
It is a compile-time error for an overriding event declaration to include a
new modifier.
Except for differences in declaration and invocation syntax, virtual,
sealed, override, and abstract accessors
behave exactly like virtual, sealed, override and abstract methods.
Specifically, the rules described in §17.5.3,
§17.5.4, §17.5.5, and §17.5.6 apply as if accessors were methods of a
corresponding form. Each accessor
corresponds to a method with a single value parameter of the event type, a
void return type, and the same
modifiers as the containing event.
virtual. The virtual modifier applies
to both accessors of an event.
An abstract event declaration specifies that the accessors of the event are
virtual, but does not provide an
actual implementation of the accessors. Instead, non-abstract derived
classes are required to provide their own
implementation for the accessors by overriding the event. Because an
accessor for an abstract event declaration
provides no actual implementation, its accessor-body simply consists of a
semicolon.
Chapter 17 Classes
251
An event declaration that includes both the abstract and override modifiers
specifies that the event is
abstract and overrides a base event. The accessors of such an event are
also abstract.
Abstract event declarations are only permitted in abstract classes (§17.1.1.
1).
The accessors of an inherited virtual event can be overridden in a derived
class by including an event declaration
that specifies an override modifier. This is known as an overriding event
declaration. An overriding event
declaration does not declare a new event. Instead, it simply specializes
the implementations of the accessors of an
existing virtual event.
An overriding event declaration must specify the exact same accessibility
modifiers, type, and name as the
overridden event.
An overriding event declaration may include the sealed modifier. Use of
this modifier prevents a derived class
from further overriding the event. The accessors of a sealed event are also
sealed.
It is a compile-time error for an overriding event declaration to include a
new modifier.
Except for differences in declaration and invocation syntax, virtual,
sealed, override, and abstract accessors
behave exactly like virtual, sealed, override and abstract methods.
Specifically, the rules described in §17.5.3,
§17.5.4, §17.5.5, and §17.5.6 apply as if accessors were methods of a
corresponding form. Each accessor
corresponds to a method with a single value parameter of the event type, a
void return type, and the same
modifiers as the containing event.
本文详细解析了虚拟事件与抽象事件的概念,包括它们在继承与覆盖中的应用方式。阐述了虚拟事件如何允许派生类覆盖事件处理程序,而抽象事件则要求派生类必须提供具体的实现。

被折叠的 条评论
为什么被折叠?



