请教一个C#定义Event的问题请问public event behindClickEventHandler behindClick;和public event behindClickEventHandler behindClick{add{Events.AddHandler(MyObj,value);}remove{Events.RemoveHandler(MyObj,value);}}二者的区别是什么?还
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/09 03:08:04
请教一个C#定义Event的问题请问public event behindClickEventHandler behindClick;和public event behindClickEventHandler behindClick{add{Events.AddHandler(MyObj,value);}remove{Events.RemoveHandler(MyObj,value);}}二者的区别是什么?还
请教一个C#定义Event的问题
请问
public event behindClickEventHandler behindClick;
和
public event behindClickEventHandler behindClick
{
add
{
Events.AddHandler(MyObj,value);
}
remove
{
Events.RemoveHandler(MyObj,value);
}
}
二者的区别是什么?
还想问一下,为什么使用后面那种方法时.
behindClick!=null时会报错.它是否定义了behindClick事件,还是只是在定义add和remove方法?
请教一个C#定义Event的问题请问public event behindClickEventHandler behindClick;和public event behindClickEventHandler behindClick{add{Events.AddHandler(MyObj,value);}remove{Events.RemoveHandler(MyObj,value);}}二者的区别是什么?还
前一个是定义了一个behindClickEventHandler,这样做的话默认实现了下面的add,remove之类代码,即默认的添加,删除事件处理器逻辑.
后面一个是定义了一个behindClickEventHandler并且定义了添加删除事件处理器的代码.
如果向第二个那样写的话,可以简写成第一个的形式,而不需要手动写add,remove.不过,当你需要在添加或删除事件的时候做一些其他的操作(比如记录日志)就需要手动写add和remove了.以下的例子是在添加,删除事件处理器的时候记录日志的代码:
public event behindClickEventHandler behindClick
{
add
{
Console.WriteLine("ADD EVENT");
Events.AddHandler(MyObj, value);
}
remove
{
Console.WriteLine("REMOVE EVENT");
Events.RemoveHandler(MyObj, value);
}
}
Ps: 这里只是定义了添加和删除eventhandler的方法而没有初始化behindClick本身.你可以简单的用property的定义来类比event的定义.