2010-11-12 5 views

Respuesta

60

Sí. Func<> devuelve el tipo especificado como parámetro de tipo genérico final, de modo que Func<int> devuelve int y Func<int, string> acepta un número entero y devuelve una cadena. Ejemplos:

Func<int> getOne =() => 1; 
Func<int, string> convertIntToString = i => i.ToString(); 
Action<string> printToScreen = s => Console.WriteLine(s); 
// use them 

printToScreen(convertIntToString(getOne())); 
16

Claro, los delegados Func volver T.

Func<TResult> is "TResult method()" 
Func<TInput, TResult> is "TResult method(TInput param)" 

Todo el camino hasta

Func<T1, T2, T3, T4, TResult> 

http://msdn.microsoft.com/en-us/library/bb534960.aspx

http://msdn.microsoft.com/en-us/library/bb534303.aspx

Además, en aras de la exhaustividad, hay es Predicate que devuelve bool.

Predicate<T> is "bool method(T param)" 

http://msdn.microsoft.com/en-us/library/bfcke1bz.aspx

+4

Además, en .NET 4, 'Func <>' puede ser 'Func ' El límite anterior era T4. –

+3

Además, para completar * complete *, no olvide ['Converter (TInput, TOutput)'] (http://msdn.microsoft.com/en-us/library/kt456a2y.aspx) y ['Comparación (T) '] (http://msdn.microsoft.com/en-us/library/tfakywbh.aspx) (ambos obviamente anteriores a' Func 'y' Func ', lo que los hace obsoletos). En realidad, probablemente haya más que eso ... –

+0

@Dan muy cierto, aunque son muy específicos debido a su nombre (que es todo lo que realmente hay que hacer). Utilicé Converter una vez: http://www.stum.de/2009/12/23/using-a-converter-to-convert-from-a-model-to-a-business-class/ –

Cuestiones relacionadas