代表与行动,Cunc中的Func

时间:2013-07-26 18:27:34

标签: c# delegates

这似乎是一个愚蠢的问题,但这只是为了好奇。

我们在C#中有两个特定的已经定义的委托:

Action封装了任何带有0个或更多参数的“void”方法 Func封装任何方法,该方法返回特定的值类型并获取0个或更多参数。

我的问题是:在哪些情况下建议定义自定义代理?
你为什么要这么做?

提前致谢

2 个答案:

答案 0 :(得分:39)

FuncAction类型都不允许outref参数,因此如果您需要使用这些参数,则必须定义自己的代理,例如:

public delegate bool TryParse<T>(string s, out T value);

答案 1 :(得分:2)

在一千个案例中,你需要引用/指向一个函数(因此代理,如果函数的实际实现在运行时会有所不同,除了签名)与任何给定的委托都不匹配。说

公共代表T MyDel(T t,U u,V v);