对委托和事件的一些地方不太理解
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呢?
我是菜鸟,请各位指教一下,谢谢
------解决方案--------------------上面两个AgeChanged 你完全可以理解为是相同的 之所以后者需要加event关键字修饰 为了不允许AgeChanged在类外面使用 在类外时 只能让它出现在+= -=的左边
AgeChanged 和 OnAgeChanged没有必然联系 之所以这样写 都是因为 微软官方命名是这样的规律而已 一般On
Event 这样的虚方法中激发
Event这样的事件 之所以声明为virtual 为了方便派生类重写
激发事件的逻辑------解决方案--------------------public event EventHandler Some;
event 是一个语法糖, 实际的样子是这样的:
EventHandler _delegate;
public event EventHandler Some
{
//
add() {}
remove() {}
raise() {}
}
就是说, Some 事件只不过是对 _delegate 进行操作的三个函数.
这样你就看出 事件和代理有什么区别了.
一般直接写一行代码表示事件的, 都是新手.
------解决方案--------------------