Action Delegate

Os Action delegate encapsulam métodos que não possuem nenhum retorno e aceitam zero ou até quatro paramêtros. A sua assinatura é encontrada no System namespace.

C#:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {

        public class Pessoa
        {
            private string _nome;

            public string nome
            {
                get { return _nome; }
                set { _nome = value; }
            }

            private int _idade;

            public int idade
            {
                get { return _idade; }
                set { _idade = value; }
            }

            bool _marcado;

            public bool marcado
            {
                get { return _marcado; }
                set { _marcado = value; }
            }
        }

        static void Main(string[] args)
        {

            // Declarando um simples delegate
            Action<Pessoa> action = EscrevaNome;

            // Criando nossa lista de pessoas
            List<Pessoa> vetPessoa = new List<Pessoa>{
                                               new Pessoa{ nome="Pessoa 1", idade=15},
                                               new Pessoa{ nome="Pessoa 2", idade=18},
                                               new Pessoa{ nome="Pessoa 3", idade=24},
                                               new Pessoa{ nome="Pessoa 4", idade=10},
                                               new Pessoa{ nome="Pessoa 5", idade=13}
                                             };

            // Chamando nosso delegate
            vetPessoa.ForEach(action);


            // Vamos supor que gostariamos marcar todas as pessoas que tem mais de 15 anos
            vetPessoa.FindAll(p => p.idade > 15).ForEach(p => p.marcado = true);

            // Primeiro utilizamos o método FindAll que aceita um Predicate para fazer o filtro
            // e depois, usamos o ForEach que aceita uma action para realizar o trabalho


        }

        public static void EscrevaNome(Pessoa p)
        {
            Console.WriteLine(p.nome);
        }
    }


}

Endereço de trackback para este post

Trackback URL (clique direito e copie atalho/localização do link)

Feedbacks esperando moderação

Esse post tem 81 feedbacks esperando moderação...

Deixe seu comentário


Seu endereço de e-mail não será revelado nesse site.

Sua URL será exibida.
(Quebras de linha se tornam <br />)
(Nome, e-mail & website)
(Permitir que usuários o contatem através de um formulário eletrônico (seu e-mail não será exibido.))