Как описать делегат Action <T>, который возвращает значение (не пустое)? - PullRequest
41 голосов
/ 12 ноября 2010

Делегат Action<T> возвращает void. Есть ли другой встроенный делегат, который возвращает не пустое значение?

Ответы [ 2 ]

66 голосов
/ 12 ноября 2010

Да. Func<> возвращает тип, указанный в качестве окончательного параметра универсального типа, так что Func<int> возвращает int, а Func<int, string> принимает целое число и возвращает строку. Примеры:

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

printToScreen(convertIntToString(getOne()));
17 голосов
/ 12 ноября 2010

Конечно, делегаты Func возвращают T.

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

вплоть до

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

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

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

Также, для полноты, есть Предикат, который возвращает bool.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...