尝试向委托添加处理程序方法时出现“预期的方法名称”错误 - C#

时间:2013-08-02 15:08:47

标签: c# methods delegates handler

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

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

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

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

有没有办法将表单传递给方法而没有错误?

提前致谢:)

2 个答案:

答案 0 :(得分:0)

您可以使用lambda表达式:

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

答案 1 :(得分:0)

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

也许你打算:

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

或者简单地说:

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