我发现自己偶尔编写代理用于非常简单的函数(不带参数并返回void例如)并且想知道是否有人知道某个已经编译了.NET框架中已经可用的所有预定义委托列表的地方所以我可以重用它们?
要明确我正在寻找这样的事情:
等等
如果没有,对博客文章来说听起来不错。
答案 0 :(得分:7)
答案 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代码。