如何在C#中创建一个空的EventHandler?[已关闭]

问题描述 投票:-1回答:1

我想创建一个不附加任何方法的EventHandler。重要的是在运行时而不是在编译时进行。以后我可以添加方法,然后调用事件。

EventHandler eventHandler = new EventHandler(); // Compiler error

if(some_condition)
{
    eventHandler += (sender, e) =>
    {
        Console.WriteLine("some condition is true");
    };
}
else
{
    eventHandler += (sender, e) =>
    {
        Console.WriteLine("some condition is false");
    };
}

eventHandler?.Invoke(this, EventArgs.Empty);

我只在第一行代码上遇到了问题。它不能让我创建一个新的没有参数的EventHandler。但如果我添加一个emtpy lambda,它就可以。

EventHandler eventHandler = new EventHandler((sender, e) => { });

有一个空的lambda看起来很丑陋,但如果我删除它,我就不能编译程序。我应该如何初始化eventHandler?

c# events eventhandler
1个回答
2
投票

没有办法实例化和清空 EventHandler 实例。通常的方法是声明一个 event 在你的类中,像下面这样。

class Example
{
    event EventHandler Event;

    void AddHandlerAndInvoke(bool condition)
    {
        if (condition)
        {
           Event += (s, e) => Console.WriteLine("true");
        }
        else
        {
            Event += (s, e) => Console.WriteLine("true");
        }

        Event?.Invoke(this, EventArgs.Empty);
    }
}

这将创建一个 event 比能会叫() EventHandler 的实例。

© www.soinside.com 2019 - 2024. All rights reserved.