delegate - generics c#
¿Hay firmas delegadas genéricas anónimas, seguras de tipo en C#2.0? (1)
Considere al delegado para una función genérica de A
a B
:
public delegate B Fun<A, B>(A x);
Luego puedo escribir una función que acepta e invoca el delegado Fun
:
public static B invokeFun<A, B>(A x, Fun<A, B> f)
{ return f(x); }
(No importa si es aconsejable escribir invokeFun
).
¿Puedo escribir invokeFun
sin nombrar el delegado Fun
? Esperaría que algo como esto funcione, pero no:
public static B invokeFun<A, B>(A x, B (A) f)
{ return f(x); }
No, no hay.
Lo más cerca que puede obtener es las dos familias de delegados genéricas en .NET 3.5: Func
y Action
. Obviamente no están realmente presentes en .NET 2.0 (excepto Action<T>
), pero son triviales de escribir, y de hecho lo he hecho por ti :)
Personalmente, me alegro de que la sintaxis "súper corta" no sea válida: me resulta más difícil de entender que la sintaxis normal "aquí está el tipo, aquí está el nombre" para el parámetro.