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.