Todos os delegados do Func retornam um valor. Quais são os delegados do .NET que podem ser usados com métodos que retornam nulos?
561
Todos os delegados da Func retornam algo; todos os delegados da ação retornam nulos.
Func<TResult>
não aceita argumentos e retorna TResult:
public delegate TResult Func<TResult>()
Action<T>
recebe um argumento e não retorna um valor:
public delegate void Action<T>(T obj)
Action
é o delegado mais simples e simples:
public delegate void Action()
Há também Func<TArg1, TResult>
e Action<TArg1, TArg2>
(e outros até 16 argumentos). Todos esses (exceto Action<T>
) são novos no .NET 3.5 (definido em System.Core).
Func<,,, ... ,>
) no .NET 4.0, mas os últimos oito tipos de cada "série" são definidos emSystem.Core.dll
, não emmscorlib.dll
, portanto, esse seria o motivo porque michielvoo não os viu. No entanto, nenhum Func ou Ação foi adicionado nas versões 4.5 e 4.5.1 do .NET. Essa sequência se tornará A170836 ou A170875 ? Fique ligado.Eu acredito que
Action
é uma solução para isso.fonte
Isso não é verdade. Todos eles usam pelo menos um argumento de tipo, mas esse argumento determina o tipo de retorno.
Portanto,
Func<T>
não aceita parâmetros e retorna um valor. UseAction
ouAction<T>
quando não desejar retornar um valor.fonte
Experimente
System.Func<T>
eSystem.Action
fonte
Converter<TInput, TOutput>
semelhante ao posteriorFunc<T, TResult>
. Foi usado noList<>.ConvertAll
método que projetava todos os elementos de umList<>
objeto em outro e colocou todos os "valores de função" em um novoList<>
. (Mais tarde, seria costumam usar LinqSelect
para isso.)Ocasionalmente, você deseja escrever um delegado para manipulação de eventos; nesse caso, você pode tirar vantagem do
System.EvenHandler<T>
que aceita implicitamente um argumento do tipoobject
, além do segundo parâmetro que deve derivarEventArgs
. EventHandlers retornarávoid
Pessoalmente, achei isso útil durante o teste para criar um retorno de chamada único em um corpo de função.
fonte
Se você está escrevendo
System.Windows.Forms
, também pode usar:fonte
Uma maneira muito fácil de chamar sub-rotinas de retorno e não retorno. está usando Func e Action, respectivamente. (consulte também https://msdn.microsoft.com/en-us/library/018hxwa8(v=vs.110).aspx )
Tente este exemplo
fonte