零参数的操作委托

26

我在许多使用Action委托的在线示例中看到了这条线:

public event Action MyEvent;

但当我尝试在我的代码中使用它时,我得到了这个错误

使用泛型类型'System.Action'需要'1'个类型参数

文档中确实描述了一种没有任何类型参数的Action形式。我错过了什么?


4
不是回答问题的内容,但是你不应该在事件中使用 Action。而应该使用 EventHandler 或者 EventHandler<T> 作为事件的委托。 - Greg Beech
2
@GregBeech,感谢您的提示,但是不使用 Action 的原因是什么? - I. J. Kennedy
@I.J.Kennedy 这个答案非常棒 https://dev59.com/dXRA5IYBdhLWcg3w2xwI#803320 - caiosm1005
2个回答

39

在 Andrew 的回答基础上进行延伸。

在非3.5的情况下使用 Action 完全合法。只需自己定义即可。

public delegate void Action();

除非您将其传递给使用System.Core的Action的其他库... - Simon Buchan
3
@Simon,如果是那样的话,你现在肯定已经在直接或间接地使用3.5版本了,所以这不是问题。 - JaredPar

23

请确保您的应用程序引用了System.Core

另外,请确保您的应用程序的目标框架为 .NET 3.5,因为 System.Core.dll 是该版本的一部分。


谢谢!我没有System.Core参考。 即使知道答案,我仍然在文档中找不到它。 - I. J. Kennedy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接