`
talin2010
  • 浏览: 522610 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

17.7 Events

阅读更多
An event is a member that enables an object or class to provide
notifications. Clients can attach executable code
for events by supplying event handlers.
Events are declared using event-declarations:
event-declaration:
attributesopt event-modifiersopt event type variable-declarators ;
attributesopt event-modifiersopt event type member-name {
event-accessor-declarations }
event-modifiers:
event-modifier
event-modifiers event-modifier
event-modifier:
new
public
protected
internal
private
static
virtual
sealed
override
abstract
extern
event-accessor-declarations:
add-accessor-declaration remove-accessor-declaration
remove-accessor-declaration add-accessor-declaration
add-accessor-declaration:
attributesopt add block
Chapter 17 Classes
247
remove-accessor-declaration:
attributesopt remove block
An event-declaration may include a set of attributes (§24) and a valid
combination of the four access modifiers
(§17.2.3), the new (§17.2.2), static (§17.5.2, §17.7.3), virtual (§17.5.
3, §17.7.4), override (§17.5.4,
§17.7.4), sealed (§17.5.5), abstract (§17.5.6, §17.7.4), and extern
modifiers.
Event declarations are subject to the same rules as method declarations (§17
.5) with regard to valid combinations
of modifiers.
The type of an event declaration must be a delegate-type (§11.2), and that
delegate-type must be at least as
accessible as the event itself (§10.5.4).
An event declaration may include event-accessor-declarations. However, if
it does not, for non-extern, nonabstract
events, the compiler shall supply them automatically (§17.7.1); for extern
events, the accessors are
provided externally.
An event declaration that omits event-accessor-declarations defines one or
more events?one for each of the
variable-declarators. The attributes and modifiers apply to all of the
members declared by such an eventdeclaration.
It is a compile-time error for an event-declaration to include both the
abstract modifier and brace-delimited
event-accessor-declarations.
When an event declaration includes an extern modifier, the event is said to
be an external event. Because an
external event declaration provides no actual implementation, it is an
error for it to include both the extern
modifier and event-accessor-declarations.
An event can be used as the left-hand operand of the += and -= operators (§1
4.13.3). These operators are used,
respectively, to attach event handlers to, or to remove event handlers from
an event, and the access modifiers of
the event control the contexts in which such operations are permitted.
Since += and ?= are the only operations that are permitted on an event
outside the type that declares the event,
external code can add and remove handlers for an event, but cannot in any
other way obtain or modify the
underlying list of event handlers.
In an operation of the form x += y or x ?= y, when x is an event and the
reference takes place outside the type
that contains the declaration of x, the result of the operation has type
void (as opposed to having the type of x,
with the value of x after the assignment). This rule prohibits external
code from indirectly examining the
underlying delegate of an event.
[Example: The following example shows how event handlers are attached to
instances of the Button class:
public delegate void EventHandler(object sender, EventArgs e);
public class Button: Control
{
public event EventHandler Click;
}
public class LoginDialog: Form
{
Button OkButton;
Button CancelButton;
public LoginDialog() {
OkButton = new Button(?);
OkButton.Click += new EventHandler(OkButtonClick);
CancelButton = new Button(?);
CancelButton.Click += new EventHandler(CancelButtonClick);
}
void OkButtonClick(object sender, EventArgs e) {
// Handle OkButton.Click event
}
C# LANGUAGE SPECIFICATION
248
void CancelButtonClick(object sender, EventArgs e) {
// Handle CancelButton.Click event
}
}
Here, the LoginDialog instance constructor creates two Button instances and
attaches event handlers to the
Click events. end example]
分享到:
评论

相关推荐

    javascript权威指南(第六版)

    17.7 Drag and Drop Events 474 17.8 Text Events 481 17.9 Keyboard Events 484 18. Scripted ...

    Tcl and TK教程经典-Tcl and TK Toolkit-1

    **17.7 控制主窗口大小** - **Controlling the Size of the Master**:调整主窗口的大小。 ### 第十八章:Packer **18.1 Packer基础** - **Packer Basics**:介绍Packer的基本概念和使用方法。 **18.2 Packer配置...

    Programming Excel With Vba And .net.chm

    Respond to Events in Excel Section 4.8. The Global Object Section 4.9. The WorksheetFunction Object Section 4.10. What You've Learned Chapter 5. Creating Your Own Objects Section 5.1. ...

    Python程序设计(第二版).chm

    Section 17.7. Permuting Sequences Section 17.8. Sorting Sequences Section 17.9. Data Structures Versus Python Built-ins Section 17.10. PyTree: A Generic Tree Object Viewer Chapter 18. Text ...

    Object-Oriented Software Construction 2nd

    17.7 BEWARE OF POLYMORPHIC CATCALLS! 636 17.8 AN ASSESSMENT 639 17.9 THE PERFECT FIT 640 17.10 KEY CONCEPTS STUDIED IN THIS CHAPTER 641 17.11 BIBLIOGRAPHICAL NOTES 641 Chapter 18: Global objects and ...

    Python Cookbook, 2nd Edition

    • Table of Contents • Index • Reviews • Reader Reviews • Errata • Academic Python Cookbook, 2nd Edition By David Ascher, Alex Martelli, Anna Ravenscroft Publisher : O'Reilly ...

    ZendFramework中文文档

    1. Introduction to Zend Framework 1.1. 概述 1.2. 安装 2. Zend_Acl 2.1. 简介 2.1.1. 关于资源(Resource) 2.1.2. 关于角色(Role) 2.1.3. 创建访问控制列表(ACL) ...2.1.5. 定义访问控制 ...

    python3.6.5参考手册 chm

    Python参考手册,官方正式版参考手册,chm版。以下摘取部分内容:Navigation index modules | next | Python » 3.6.5 Documentation » Python Documentation contents What’s New in Python ...

    Sql for mysql

    CHAPTER 1 Introduction to MySQL . . . . . . . . . ....1.1 Introduction ....1.2 Database, Database Server, and Database Language....1.3 The Relational Model .... ....1.5 The History of SQL ....1.6 From Monolithic via ...

    using-liferay-portal-6.2.pdf

    9.2 Managing Events and Resources with Liferay’s Calendar Portlet . . . . . 211 9.3 Discuss, Ask, and Answer Using the Message Boards . . . . . . . . . . . 221 9.4 Working together with the Wiki . . ...

    SystemVerilog Reference Manual 3.1a(中英文版)+最新SV IEEE 标准

    Table of Contents Section 1 Introduction to SystemVerilog ...................................................................................................... 1 Section 2 Literal Values................

    Error Correction coding——mathematical methods and algorithms

    Error Correction Coding - Mathematical Methods and Algorithms (Source Files Contained).pdf Error Correction Coding Mathematical Methods and Algorithms Todd K....Utah State University ...

Global site tag (gtag.js) - Google Analytics