A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© mzh901024 中级黑马   /  2013-7-23 20:26  /  1322 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public delegate void PersonHandler(object sender, PersonEventArgs e);

  2. public class Person
  3.     {
  4.         private string name;
  5.         private int age;

  6.         public event PersonHandler AgeChanged;
  7.         protected virtual void OnAgeChanged( PersonEventArgs e )
  8.         {
  9.             if (AgeChanged != null)
  10.                 AgeChanged( this, e );
  11.         }
  12. //后续的不贴了
复制代码
public event PersonHandler AgeChanged;  这句不理解,event 是类型吗?
我只看到过public string str;这样的写法, 上面这句有4个单词,我就不理解了

protected virtual void OnAgeChanged  我之前看书说virtual虚拟方法的话,需要被重写,后续我也没看到
有重写的过程额,如果不需要重写,为什么又要写virtual呢?

2 个回复

倒序浏览
public event PersonHandler AgeChanged;
event是定义事件的关键字,后面跟你之前定义的委托类型,然后是此事件的名字,例如这个是AgeChanged

用virtual修饰的方法表示这个方法[可以]被重写。
回复 使用道具 举报
public event PersonHandler AgeChanged;
这段代码 编译器会生成类似如下代码: private PersonHandler  AgeChanged=null;
public void add_AgeChanged(PersonHandler value)
{
     //....................................
}   

public void remove_AgeChanged(PersonHandler value)
{
     //....................................
}   

事件:类或对象可以通过事件向其他类或对象通知发生的相关事情。 发送(或引发)事件的类称为“发行者”,接收(或处理)事件的类称为“订户”。CLR事件模型建立在委托基础上的,委托对象充当事件发送者和事件接受者的中介。
引发事件:一般用户操作或者程序逻辑引发。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马