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. |
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 ?
O método TrueForAll consiste basicamente em um loop que itera sobre cada elemento na coleção;
Dentro deste loop, uma chamada para o delegado match é invocada;
Se este Delegate retorna true, o processamento continua para o próximo elemento na coleção;
Se este delegado retorna false, o processamento pára e um false é retornado;
Quando o método TrueForAll é concluído, iterando sobre todos os elementos da coleção, e, o delegado de partida não retornou um valor false para qualquer elemento, o método TrueForAll retorna um true;.
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})
|
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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Visual Studio - Dica de produtividade - Quick Launch - Macoratti.net
Visual Studio - Dica de produtividade - Nuget - Macoratti.net
C# - 10 dicas para aumentar sua produtividade - Macoratti.net
C# - 5 Dicas para incrementar o desempenho do seu ... - Macoratti.net
Visual C# 6.0 - Novidades da nova versão ... - Macoratti.net