‫Tudo bem, então agora que, você sabe, a ideia geral dos delegados, vamos olhar para eles em ação e
‫para entendê-los melhor, começaremos usando um delegado que já existe no C Sharp.
‫Portanto, em primeiro lugar, vamos começar definindo uma lista simples de strings chamadas nomes.
‫E então vou usar isso.
‫Digamos que eu queira remover nomes dele.
‫Portanto, aqui está este método remove all e, portanto, remove all method me permite remover todos os
‫elementos que correspondem às condições definidas pelo predicado especificado.
‫Então você vê que esta palavra-chave predicado verde é basicamente o que podemos passar.
‫Portanto, este é basicamente aqui um delegado que é esperado.
‫Predicado é apenas o nome do delegado esperado.
‫Depois de clicar nele, você o encontrará aqui.
‫O delegado público será o predicado.
‫Portanto, você pode ver que o predicado são os delegados que recebem um objeto de T, o que significa um tipo
‫específico.
‫Nesse caso, T é o tipo de nossos elementos de lista.
‫Portanto, em nosso caso, é uma string e retorna um booleano.
‫Portanto, quando chamamos o método remove all, esse predicado será chamado em todos os nomes em nossa lista.
‫Se lermos a documentação, saberemos que o bool que é retornado por esse predicado determinará se
‫esse elemento será ou não removido da lista.
‫Se retornar verdadeiro, o elemento será removido.
‫E é nosso trabalho escrever essas regras que determinam o destino de nossos nomes em nossa lista.
‫Então, desses nomes que temos aqui, o que significa Aden's if Alter e Anatoliy.
‫Afinal, as pessoas que escreveram o código por trás do método remove all não podem ler nossas mentes para determinar as
‫regras que desejamos.
‫Exatamente.
‫É por isso que criaremos nosso próprio método que corresponda à definição do delegado de predicado e
‫o passaremos para o método remove all.
‫Digamos que queremos remover todos os nomes que contêm a letra I para que possamos escrever nosso método de filtragem dessa
‫forma.
‫Portanto, apenas criamos um filtro de pool estático, que receberá uma string.
‫Portanto, este é o nosso método chamado filtro e retornamos se a string contém a letra I.
‫E aqui estamos usando o método contido, que retornará um booleano, que retornará verdadeiro ou
‫falso.
‫Então, aqui o conteúdo, você vê que leva uma string para verificar se ela contém isso e, em seguida, retorna um booleano.
‫Portanto, o que fazemos aqui é, de fato, retornar um booleano.
‫E leva uma string como parâmetro, então basicamente retornaremos true para a string contém I e então o
‫método remove all executará este método de filtro em todos os elementos em nossa lista.
‫Portanto, agora vamos passar nosso método de filtro para o método remove all que temos aqui que ainda não foi
‫concluído e ainda precisa de delegados que podemos passar para ele.
‫E vamos adicionar A para cada loop antes e depois do método remove all apenas para observação.
‫Então, vou adicionar esse pequeno resfriado aqui, onde apenas digo que foi isso que aconteceu antes.
‫Então, escrevemos uma lista de nomes no console com todos os nomes que estão em nossa lista aqui.
‫E então removemos tudo isso, seguimos um determinado filtro e o executamos mais uma vez.
‫Agora, esse filtro que estamos passando, você vê, não usamos os colchetes aqui,
‫embora seja um método, então basicamente estamos passando um método como um parâmetro aqui e estamos verificando se a string
‫que tá passando contém um olho.
‫Então, vamos executá-lo e ver quais nomes contêm.
‫E eu.
‫Então se identificamos Walter e Anatoly, e depois removemos todos, exceto Walter porque Walter é um barbante
‫que não contém um olho.
‫OK.
‫E é basicamente assim que usamos um delegado que já existia.
‫E agora usamos um método que requer um delegado que podemos passar para ele.
‫Então, basicamente o que aconteceu é que nomes, há pequenas cordas aqui.
‫Foi dado para remover todos e verificado um a um com o filtro que usamos aqui, então ele
‫passou cada valor único de nomes, um após o outro, em nosso método de filtro, passou pelo filtro e retornou
‫se foi excluído ou não.
‫Portanto, este booleano será verdadeiro se I estiver contido na string que foi passada.
‫Portanto, aquela string que estamos examinando atualmente em nossa lista de nomes e se este ano retornar verdadeiro, o método
‫de filtro retornará verdadeiro.
‫O que levará à remoção de todos, tendo o cuidado de remover o nome da lista de nomes.
‫Tudo bem.
‫Portanto, este foi apenas um exemplo de um delegado.
‫E você vê, nós não passamos especificamente aqui o que queremos ter.
‫Portanto, não dissemos qual string queremos pegar, por exemplo, dizendo que o nome começa com um índice ou qualquer outra
‫coisa.
‫Não tivemos que fazer nada disso porque, bem, remover todos esperar um delegado aqui, e foi isso que passamos
‫para ele.
‫Se ainda estiver um pouco confuso, não se preocupe, teremos mais alguns exemplos, que certamente
‫ajudarão você a entender os delegados um pouco melhor, porque vamos criar alguns
‫nós mesmos e, então, faremos muito mais senso.
‫Então nos vemos no próximo vídeo.