5

考虑一个泛型函数的A委托:B

public delegate B Fun<A, B>(A x);

然后我可以编写一个接受和调用Fun委托的函数:

public static B invokeFun<A, B>(A x, Fun<A, B> f)
{ return f(x); }

(不管写是否明智invokeFun。)

我可以在invokeFun命名Fun代表的情况下写作吗?我希望这样的事情能够奏效,但它不会:

public static B invokeFun<A, B>(A x, B (A) f)
{ return f(x); }
4

1 回答 1

7

不,没有。

您可以获得的最接近的是 .NET 3.5 中的两个通用委托系列:FuncAction. 显然它们实际上并不存在于 .NET 2.0 中(除了Action<T>),但它们编写起来很简单——事实上我已经为你这样做了:)

就我个人而言,我很高兴“uber-short”语法是无效的——我发现它比参数的普通“这里是类型,这里是名称”语法更难理解。

于 2008-10-09T16:48:37.680 回答