Упражнения C#

Собственный метод расширения для последовательностей в C#

В этом уроке вы напишете метод расширения None() для любой последовательности, который проверяет, что ни один элемент не удовлетворяет условию.

Введение

Методы расширения позволяют добавлять к существующим типам операции с понятными названиями. Здесь вы напишете метод None, противоположный Any из LINQ: он возвращает true, когда ни один элемент не удовлетворяет условию.

Метод None<T> расширяет IEnumerable<T>, поэтому работает с массивами, List и любой другой последовательностью. Цикл перебирает элементы и сразу возвращает false, как только находит подходящий под условие; если дошёл до конца, возвращает true. В массиве [1, 3, 5] нет чётных чисел, поэтому результат True.

Пример на C#, который можно запустить

C#
Запустить код →
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));
}
Результат выполнения
True

Практика с отладчиком

Поставьте точку останова на важное присваивание или условие, нажмите Debug и посмотрите локальные значения, прежде чем перейти к следующей строке.

Попрактикуйтесь на задаче

Примените материал этого урока к реальной задаче. Каждая задача запускается в браузере, с мгновенными тестами и разбором от ИИ.

Все задачи