黑马程序员技术交流社区
标题:
委托和事件的疑惑
[打印本页]
作者:
mzh901024
时间:
2013-7-23 20:26
标题:
委托和事件的疑惑
public delegate void PersonHandler(object sender, PersonEventArgs e);
public class Person
{
private string name;
private int age;
public event PersonHandler AgeChanged;
protected virtual void OnAgeChanged( PersonEventArgs e )
{
if (AgeChanged != null)
AgeChanged( this, e );
}
//后续的不贴了
复制代码
public event PersonHandler AgeChanged; 这句不理解,event 是类型吗?
我只看到过public string str;这样的写法, 上面这句有4个单词,我就不理解了
protected virtual void OnAgeChanged 我之前看书说virtual虚拟方法的话,需要被重写,后续我也没看到
有重写的过程额,如果不需要重写,为什么又要写virtual呢?
作者:
brucel50
时间:
2013-7-23 21:52
public event PersonHandler AgeChanged;
event是定义事件的关键字,后面跟你之前定义的委托类型,然后是此事件的名字,例如这个是AgeChanged
用virtual修饰的方法表示这个方法[可以]被重写。
作者:
sxdxgzr@126.com
时间:
2013-7-24 21:10
public event PersonHandler AgeChanged;
这段代码 编译器会生成类似如下代码: private PersonHandler AgeChanged=null;
public void add_AgeChanged(PersonHandler value)
{
//....................................
}
public void remove_AgeChanged(PersonHandler value)
{
//....................................
}
事件:类或对象可以通过事件向其他类或对象通知发生的相关事情。 发送(或引发)事件的类称为“发行者”,接收(或处理)事件的类称为“订户”。CLR事件模型建立在委托基础上的,委托对象充当事件发送者和事件接受者的中介。
引发事件:一般用户操作或者程序逻辑引发。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2