Eu estava trabalhando com os Delegados de Ação em C # na esperança de aprender mais sobre eles e pensar onde eles poderiam ser úteis.
Alguém já usou o Delegado de Ação e, em caso afirmativo, por quê? ou você pode dar alguns exemplos onde isso pode ser útil?
Aqui está um pequeno exemplo que mostra a utilidade do delegado Action
Observe que o método foreach itera a coleção de nomes e executa o
print
método em cada membro da coleção. Essa é uma mudança de paradigma para os desenvolvedores de C # à medida que avançamos em direção a um estilo de programação mais funcional. (Para obter mais informações sobre a ciência da computação por trás, leia isto: http://en.wikipedia.org/wiki/Map_(higher-order_function) .Agora, se você estiver usando o C # 3, você pode usar um pouco disso com uma expressão lambda da seguinte maneira:
fonte
Bem, uma coisa que você pode fazer é se você tiver uma opção:
E com o poder das ações, você pode transformar essa chave em um dicionário:
...
Ou você pode levar isso mais longe:
....
Apenas alguns exemplos. Obviamente, o uso mais óbvio seria os métodos de extensão Linq.
fonte
Você pode usar ações para manipuladores de eventos curtos:
fonte
Eu usei o delegado de ação como este em um projeto uma vez:
tudo o que faz é armazenar uma ação (chamada de método) em um tipo de controle, para que você possa limpar todos os controles de um formulário para os padrões anteriores.
fonte
Para um exemplo de como a ação <> é usada.
Console.WriteLine tem uma assinatura que satisfaz
Action<string>
.Espero que isto ajude
fonte
Eu o uso quando estou lidando com chamadas de linha cruzada ilegal. Por exemplo:
Devo dar crédito ao usuário 65358 da Reed Copsey SO pela solução. Minha pergunta completa com respostas é SO Pergunta 2587930
fonte
Usei-o como retorno de chamada em um manipulador de eventos. Quando eu levanto o evento, passo um método usando uma string como parâmetro. É assim que o evento é apresentado:
O método:
A é a declaração de classe do evento Args:
Dessa forma, eu posso chamar o método passado do manipulador de eventos com um parâmetro para atualizar os dados. Eu uso isso para solicitar algumas informações do usuário.
fonte
Usamos muitas funcionalidades de delegação de ação nos testes. Quando precisamos construir algum objeto padrão e depois modificá-lo. Eu fiz pouco exemplo. Para construir o objeto de pessoa padrão (John Doe), usamos a
BuildPerson()
função Mais tarde, adicionamos Jane Doe também, mas modificamos sua data de nascimento, nome e altura.fonte