Exercícios de C#

Escrever um método de extensão para sequências em C#

Nesta lição, você vai escrever o método de extensão None() para qualquer sequência, verificando se nenhum elemento atende a uma condição.

Introdução

Os métodos de extensão ajudam a acrescentar operações com nomes claros a tipos existentes. Aqui, você vai escrever o método None, o oposto do Any do LINQ: ele retorna true quando nenhum elemento atende à condição.

O método None<T> estende IEnumerable<T>, então funciona com arrays, List e qualquer outra sequência. O laço percorre cada elemento e retorna false assim que encontra um que atende à condição; se chegar ao fim, retorna true. O array [1, 3, 5] não tem nenhum número par, então o resultado é True.

Exemplo de C# executável

C#
Rodar código →
Program.cs
using System;
using System.Collections.Generic;
static class EnumerableExtensions
{
    public static bool None<T>(this IEnumerable<T> source, Func<T, bool> predicate)
    {
        foreach (T item in source) if (predicate(item)) return false;
        return true;
    }
}
class Program
{
    static void Main() => Console.WriteLine(new[] { 1, 3, 5 }.None(number => number % 2 == 0));
}
Resultado da execução
True

Pratique com o depurador

Coloque um breakpoint em uma atribuição ou condição importante, clique em Debug e veja os valores das variáveis locais antes de passar para a próxima linha.

Pratique com um desafio

Use o conteúdo desta lição para resolver um problema real. Cada desafio roda no navegador, com testes instantâneos e uma revisão por IA.

Todos os desafios