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 のレビューも受けられます。
すべてのチャレンジ