parameter generic delegate clase array c# generics delegates

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.