0

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

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

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

我之前已经将静态类的方法添加到同一个委托,它工作正常,唯一的区别是我将表单作为参数传递,然后它不喜欢它。

有什么方法可以将表单传递给方法而不会出错?

提前致谢 :)

4

2 回答 2

0

您可以使用 lambda 表达式:

LivesManager.gameEnded += () => CountdownManager.DisableFlashTimer(this);
于 2013-08-02T15:09:58.093 回答
0

我假设了一点,因为您没有包含gameEndedor的定义EndGame。我相信问题CountdownManager.DisableFlashTimer(this)不在于方法名称,而实际上是方法调用。编译器试图将此方法调用的最终返回值传递给LivesManager.EndGame构造函数,而LivesManager.EndGame很可能是(void 无参数?)委托。

也许您打算:

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

或者简单地说:

LivesManager.gameEnded += () => CountdownManager.DisableFlashTimer(this);
于 2013-08-02T15:13:55.467 回答