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
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));
}
TruePractica con el depurador
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.
- Eliminar duplicados Conserva solo la primera aparición de cada valor. Fácil
- Dividir una lista en bloques Corta una lista en grupos consecutivos de un tamaño fijo, con un último grupo más corto si hace falta. Fácil