事件,在事件引发时添加方法 [英] Events, add a method when event raised
本文介绍了事件,在事件引发时添加方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
public delegate void myDelecate();
class A
{
public event myDelecate myEvent;
public void everaise()
{
if(myEvent!=null)
myEvent();
}
}
class Program
{
static void Main(string[] args)
{
A obj = new A();
obj.myEvent += new myDelecate(DEF);
obj.everaise();
Console.ReadLine();
}
public static void DEF()
{
Console.WriteLine("DEF method called");
}
}
如何将这些代码变成一行代码,
obj.myEvent + = new myDelecate(DEF);
obj.everaise();
how to make these codes into a single line of code,
obj.myEvent += new myDelecate(DEF);
obj.everaise();
推荐答案
你可以自定义添加/删除活动的处理程序:
You can have custom add/remove handlers for an event:
class A
{
private myDelecate del;
public event myDelecate myEvent
{
add
{
del += value; // add handler
value(); // call the method being added
//del(); // call all the methods added so far
}
remove
{
del -= value;
}
}
}
您无需调用公共方法来举起活动:
And you don't need to call the public method to raise the event:
void Main()
{
A obj = new A();
obj.myEvent += new myDelecate(DEF);
//obj.everaise();
}
请注意,这只会调用添加的代理。您的原始解决方案调用了添加到事件中的所有代理。
Please note that this will only invoke the delegate being added. Your original solution invoked all the delegates that were added to the event.
这篇关于事件,在事件引发时添加方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文