2010-11-12 19 views

risposta

60

Sì. Func<> restituisce il tipo specificato come parametro di tipo generico finale, in modo che Func<int> restituisca un int e Func<int, string> accetta un numero intero e restituisce una stringa. Esempi:

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

printToScreen(convertIntToString(getOne())); 
16

Certo, i delegati Func ritorno T.

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

Per tutto il tragitto verso il basso per

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

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

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

Inoltre, per ragioni di completezza, ci è Predicato che restituisce bool.

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

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

+4

Inoltre, in .NET 4, 'Func <>' può essere 'Func ' Il limite precedente era T4. –

+3

Inoltre, per * complete * completezza, non dimenticare ['Converter (TInput, TOutput)'] (http://msdn.microsoft.com/en-us/library/kt456a2y2y.aspx) e ['Confronto (T) '] (http://msdn.microsoft.com/en-us/library/tfakywbh.aspx) (entrambi ovviamente in grado di precedere' Func 'e' Func ', che li rende obsoleti). In realtà, ci sono probabilmente più di questo ... –

+0

@Dan molto vero, anche se sono molto specifici a causa della loro denominazione (che è tutto ciò che c'è davvero da fare). Ho usato Converter una volta: http://www.stum.de/2009/12/23/using-a-converter-to-convert-from-a-model-to-a-business-class/ –

Problemi correlati