C# - Testando cada elemento em um Array ou List<T> com TrueForAll


 Nesta dica vou mostrar como podemos testar cada elemento de um Array ou List<T> indicando se o teste foi bem sucedido para todos os elmentos ou se falhou para pelo menos um elemento.

Você precisa verificar uma condição para cada elemento de um Array ou List<T> e saber se a condição é válida para todos os elementos ou se falhou para pelo menos um dos elementos.

Parece uma tarefa 'escabrosa' , mas as aparências enganam e neste caso específico a tarefa pode ser realizada facilmente usando o método TrueForAll que

Determina se todos os elementos de uma array ou lista (List<T>) corresponde às condições definidas pelo predicado especificado.

O método possui a seguinte sintaxe:


public bool TrueForAll (Predicate<T> match )

Onde match é um tipo Predicate<T> que é um delegate que define as condições para verificação dos elementos. O retorno é um valor boleano.

A utilização do TrueForAll nas classes Array e List<T> permite que você configure facilmente testes para todos os elementos nessas coleções.

Como exemplo você pode facilmente definir testes para determinar:

• Se quaisquer elementos numéricos estiverem acima de um valor máximo especificado
• Se quaisquer elementos numéricos estiverem abaixo de um valor mínimo especificado
• Se qualquer elemento string contiver um conjunto especificado de caracteres
• Se qualquer objeto de dados tiver todos os campos preenchidos


Como funciona ?

Recursos Usados

Criando o projeto Console Application

Abra o VS 2015 Community e crie um novo projeto (File-> New Project) usando a linguagem C# e o template Console Applicaiton.

Informe um nome a seu gosto. Eu vou usar o nome C_TrueOrAll;

Exemplo 1:

        private static void Teste1()
        {
            // Cria uma lista de strings
            List<string> nomes = new List<string>() { "Macoratti", "Visual C#", null, ".NET", "2017" };
            // Determina se existe um valor null na lista
            string str = nomes.TrueForAll(delegate (string val)
            {
                if (val == null)
                    return false;
                else
                    return true;
            }).ToString();
            // exibe o resultado
            Console.WriteLine("Todos os valores da lista são diferentes de null ? Resposta = {0}", str);
        }

Exemplo 2: (Código C# e VB .NET)

 private static void Teste2()
        {
            //cria uma lista de numeros inteiros
            var numeros = new List<int>() { 4, 6, 7, 8, 34, 33, 11 };
            //verifica se existe um valor menor ou igual a zero
            var isTrue = numeros.TrueForAll(n => n > 0);
            Console.WriteLine("Todos os valores da lista são diferentes de zero ? Resposta = {0}", isTrue);
        }
 
versão VB.NET:

Dim numeros = New List(Of Integer) (New Integer() {4, 6, 7, 8, 34, 33, 11})
Dim isTrue = numeros.TrueForAll(Function(n) n > 0)

 

Nota :  A alternativa usando apenas código C# seria :

bool isTrue = false;
foreach (var i in numeros)
{
    if (i == 0)
    {
          isTrue = true;
    }
}

Executando o projeto iremos obter:

Dessa forma temos mais uma opção para verificar todos os elementos de uma lista ou array contra uma condição usando um Predicate.

"(Disse Jesus)Eu sou a porta; se alguém entrar por mim, salvar-se-á, e entrará, e sairá, e achará pastagens.
O ladrão não vem senão a roubar, a matar, e a destruir; eu vim para que tenham vida, e a tenham com abundância."

João 10:9,10

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti