C#2.0中是否存在匿名,类型安全,通用的委托签名?

EfF*_*ort 5 c# generics delegates

考虑了通用委托AB函数:

public delegate B Fun<A, B>(A x);
Run Code Online (Sandbox Code Playgroud)

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

public static B invokeFun<A, B>(A x, Fun<A, B> f)
{ return f(x); }
Run Code Online (Sandbox Code Playgroud)

(不要在意写作是否明智invokeFun.)

我可以写invokeFun没有命名Fun委托?我希望这样的东西可以工作,但它不会:

public static B invokeFun<A, B>(A x, B (A) f)
{ return f(x); }
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

不,没有.

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

就个人而言,我很高兴"uber-short"语法无效 - 我发现比正常的"这里的类型,这里是名称"参数的语法更难理解.