";方法名称应为“”;尝试向委托添加处理程序方法时出错-C#

本文关键字:方法 添加 处理 -C# 出错 程序 quot | 更新日期: 2023-09-27 18:25:54

在尝试将方法添加到委托时,我不断收到错误"预期方法名称"。我有一个委托,每当我的游戏结束时,它就会被调用。我试图添加到委托中的函数阻止倒计时闪烁(该方法在静态类中)。我到处找了找,但我仍然不确定为什么它不起作用。这是导致错误的行:

LivesManager.gameEnded += new LivesManager.EndGame(CountdownManager.DisableFlashTimer(this));

this将当前表单传递给方法,以便它可以禁用表单上的计时器闪烁。

我以前曾将静态类中的方法添加到同一个委托中,它运行良好,唯一的区别是我将表单作为参数传递,但它不喜欢它。

有没有任何方法可以在没有错误的情况下将表单传递给方法?

提前感谢:)

";方法名称应为“”;尝试向委托添加处理程序方法时出错-C#

我假设了一点,因为您还没有包括gameEndedEndGame的定义。我认为问题是CountdownManager.DisableFlashTimer(this)不是一个方法名称,而是一个调用的方法。编译器试图将此方法调用的最终返回值传递给LivesManager.EndGame构造函数,而LivesManager.EndGame很可能是(void parameterless?)Delegate。

也许你打算:

LivesManager.gameEnded += 
    new LivesManager.EndGame(() => CountdownManager.DisableFlashTimer(this));

或者简单地说:

LivesManager.gameEnded += () => CountdownManager.DisableFlashTimer(this);

您可以使用lambda表达式:

LivesManager.gameEnded += () => CountdownManager.DisableFlashTimer(this);