这似乎是一个愚蠢的问题,但这只是为了好奇。
我们在C#中有两个特定的已经定义的委托:
Action封装了任何带有0个或更多参数的“void”方法 Func封装任何方法,该方法返回特定的值类型并获取0个或更多参数。
我的问题是:在哪些情况下建议定义自定义代理?
你为什么要这么做?
提前致谢
答案 0 :(得分:39)
Func
或Action
类型都不允许out
或ref
参数,因此如果您需要使用这些参数,则必须定义自己的代理,例如:
public delegate bool TryParse<T>(string s, out T value);
答案 1 :(得分:2)
在一千个案例中,你需要引用/指向一个函数(因此代理,如果函数的实际实现在运行时会有所不同,除了签名)与任何给定的委托都不匹配。说
公共代表T MyDel(T t,U u,V v);