有人知道已经内置到框架中的代表列表吗?

时间:2008-09-15 19:31:42

标签: .net

我发现自己偶尔编写代理用于非常简单的函数(不带参数并返回void例如)并且想知道是否有人知道某个已经编译了.NET框架中已经可用的所有预定义委托列表的地方所以我可以重用它们?

要明确我正在寻找这样的事情:

  • void System.AsyncCallback(System.IAsyncResult)
  • int System.Comparison(T x,T y)
  • void System.IO.ErrorEventHandler(object,System.Io.ErrorEventArgs)

等等

如果没有,对博客文章来说听起来不错。

5 个答案:

答案 0 :(得分:7)

只需查看msdn数据库中的(T)委托。

您可以在此处获得直接链接:List of delegates

这应该让你开始。

答案 1 :(得分:3)

我之前曾在这些专栏中发帖here。基本上,我描述了如何使用Reflector找到满足您需求的现有委托。

答案 2 :(得分:2)

要记住的一件事是,您编写的代码对未来的编码人员来说是可读的,包括您未来的自我。即使您可以在框架中找到具有正确签名的内置委托,但如果它隐藏了代码的用途,则使用该委托并不总是正确的。

未来六个月,使用类型为 BondMaturationAction 的委托将比具有Action类型的委托更清晰,即使签名是相同的。

答案 3 :(得分:1)

只需使用Action,Action< T>,Action< T1,T2,..>代表没有返回任何东西的方法(void),或者Func< TResult>,Func< T,TResult>,Func< T1,...,TResult>代表返回TResult的方法。

这些代表是.net 3.5中的新成员。

答案 4 :(得分:0)

在.NET 2.0及更高版本中,如果您根本没有参数,请使用EventHandler,并且EventHandler< T>如果您想提供一些自定义数据(您需要从EventArgs派生一个包含其他数据的类)。如果您没有要使用的EventArgs,请传递EventArgs.Empty。

因为EventArgs是引用类型,所以EventHandler< T>的所有实例都是使用相同的JITted代码。