C# 演習

C#でデータの並びのための拡張メソッドを自分で書く

このレッスンでは、どの要素も条件を満たさないかを調べる拡張メソッドNone()を、すべてのデータの並びに対して書きます。

はじめに

拡張メソッドを使うと、既存の型にわかりやすい名前の操作を追加できます。ここでは、LINQのAnyとは逆に、条件を満たす要素が1つもないときにtrueを返すNoneメソッドを書きます。

None<T>メソッドはIEnumerable<T>を拡張するので、配列、List、そのほかすべてのデータの並びで使えます。ループは要素を1つずつたどり、条件を満たす要素が見つかった時点で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 を押し、次の行に進む前にローカル変数の値を確かめましょう。

チャレンジで練習する

このレッスンの内容を使って実際の問題を解きましょう。各チャレンジはブラウザで動き、すぐにテストされ、AI のレビューも受けられます。

すべてのチャレンジ