Ejercicios de C#

Escribir tu propio método de extensión para secuencias en C#

En esta lección vas a escribir el método de extensión None() para cualquier secuencia, que comprueba que ningún elemento cumpla una condición.

Introducción

Los métodos de extensión permiten añadir a los tipos existentes operaciones con nombres que se entienden solos. Aquí vas a escribir el método None, lo contrario de Any en LINQ: devuelve true cuando ningún elemento cumple la condición.

El método None<T> extiende IEnumerable<T>, así que funciona con arreglos, List y cualquier otra secuencia. El bucle recorre cada elemento y devuelve false en cuanto uno cumple la condición; si llega al final, devuelve true. El arreglo [1, 3, 5] no tiene ningún número par, así que el resultado es True.

Ejemplo de C# ejecutable

C#
Ejecutar 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 de la ejecución
True

Practica con el depurador

Pon un punto de interrupción en una asignación o condición importante, pulsa Debug y revisa los valores locales antes de pasar a la siguiente línea.

Practica con un reto

Usa lo que cubre esta lección para resolver un problema real. Cada reto se ejecuta en el navegador, con pruebas al instante y una revisión de IA.

Todos los retos