事件,在事件引发时添加方法 [英] Events, add a method when event raised

查看:59
本文介绍了事件,在事件引发时添加方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆