易截截图软件、单文件、免安装、纯绿色、仅160KB

《C#图解教程》读书笔记第16章——事件

这本书讲解
C#
语言十分详细,我将其中的重要内容整理成条款,以备忘。
1.      
事件是在满足某个特定条件时发生的,触发
(raise)
事件的对象称为发布者
(publisher)
,对这个事件进行响应的对象称为订阅者
(subscriber)
。事件处理程序是注册到事件的方法,可在任何类或者结构中。
 
2.      
自定义事件的步骤:
1.
委托声明:事件和事件的处理程序必须有相同的签名和返回类型。都通过对应的委托类型来描述。
2.
事件处理程序声明:在事件被触发后执行的方法。
3.
事件声明:在事件发布者类中声明保存并调用事件处理程序。
4.
订阅事件:将事件处理程序与事件连接起来。
5.
编写触发事件的代码:在发布者类中编写代码触发事件导致订阅此事件的事件处理程序被调用。
 
3.      
声明事件时需要委托的名字,语法为:
public event DelegateName EventName;
事件与委托的行为十分相似,原因是事件其实是对委托的封装,事件中包含一个私有的委托变量,提供对它的私有控制,并对外界提供了有限的操作方式
,这样用户代码就不可以对这个委托进行可能会破坏面向对象封装性的操作了。
+=

-=
是事件唯一允许的运算符
,它们分别用来对事件进行添加
和删除
事件处理程序。
 
4.      
注意:与委托不同,事件是一个类的成员
,而非是类型。事件是某个特定类型中的一种成员,它允许它所在的类型(或者类型的实例)在某些特定事情发生的时候通知其他对象。由于事件是成员,所以不可以使用对象创建表达式
(new)
来创建它的对象,且事件必须声明在类或结构中,另外:事件成员被隐式自动初始化为
null

 
5.      
触发事件看起来与调用方法类似。使用事件名称,参数列表包含在圆括号中。参数列表必须匹配事件的委托类型。
 
6.      
为事件添加事件处理程序时,处理程序必须和委托类型拥有相同的返回类型和签名
。通过
+=
运算符来为事件添加处理程序。事件处理程序可以是以下任何一种:
实例方法
静态方法
匿名方法
Lambda
表达式


相关文档:

SWF之间通信、Flex与SWF之间通信、C#与SWF之间通信


SWF之间通信、Flex与SWF之间通信、C#与SWF之间通信
一、SWF之间通信(各SWF文件均没有包含关系——非内部嵌入加载,均独立)
使用 LocalConnection 类可以创建一个 LocalConnection 对象,该对象可在一个 SWF 文件中或多个 SWF 文件间,调用另一个 LocalConnection 对象中的方法。 通过本地连接,可以在 SWF ......

c# XML序列化与反序列化

原先一直用BinaryFormatter来序列化挺好,可是最近发现在WinCE下是没有办法进行BinaryFormatter操作,很不爽,只能改成了BinaryWriter和BinaryReader来读写,突然想到能不能用XML来序列化?于是在网上查了些资料便写了些实践性代码,做些记录,避免以后忘记。
序列化对象
    public class People
  ......

C#小Tip:Xml操作简明手册 1


1)Xml文档示例(xmlsample.xml):
 
Code
<?xml version="1.0" encoding="iso-8859-1" ?>
<music>
  <song title="Oh,girl">
    <artist>The Chi-lites</artist>
    <genre>Soul</genre>
  &nb ......

C#中一些字符串操作的常用用法,c#编码和解码

//获得汉字的区位码
  byte[] array = new byte[2];
  array = System.Text.Encoding.Default.GetBytes("啊");
int i1 = (short)(array[0] - ''\0'');
  int i2 = (short)(array[1] - ''\0'');
//unicode解码方式下的汉字码
  array = System.Text.Encoding.Unicode.GetBytes("啊");
  i1 = (short)(arra ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号