C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#配列のTrueForAll()メソッドの使い方を徹底解説

C#のArray.TrueForAll()メソッドを使うと、配列内のすべての要素が指定した条件を満たしているかどうかを一度に確認できます。ループを自分で書く必要がなく、簡潔なコードで条件判定を行えるのが大きな特徴です。

TrueForAll()メソッドの基本構文

public static bool TrueForAll<T>(T[] array, Predicate<T> match);

パラメータ

  • array: 判定対象となる1次元のゼロベース配列
  • match: 各要素に対して評価する条件を定義するPredicate<T>デリゲート(通常はラムダ式で記述)

戻り値はbool型です。すべての要素が条件を満たせばtrueを返し、1つでも条件を満たさない要素があればfalseを返します。

使用例

次の例では、int型の配列内のすべての要素が「1より大きい」という条件を満たしているかどうかをチェックしています。

using System;
using System.Text;

public class Demo {
    public static void Main() {
        int[] val = { 97, 45, 76, 21, 89, 45 };
        // 配列のすべての要素が1より大きいかどうかをチェック
        bool result = Array.TrueForAll(val, res => res > 1);
        Console.WriteLine(result);
    }
}

出力

True

この例では、配列valの各要素(97, 45, 76, 21, 89, 45)に対して、ラムダ式res => res > 1が順番に評価されます。すべての要素が1より大きいため、結果はTrueとなります。

条件を満たさない場合の動作

配列内に条件を満たさない要素が1つでも存在すると、その時点で処理は打ち切られ、falseが返されます。

using System;

public class Demo {
    public static void Main() {
        int[] val = { 97, 45, 0, 21, 89, 45 };
        // 0が含まれるため、すべての要素が1より大きいという条件は満たされない
        bool result = Array.TrueForAll(val, res => res > 1);
        Console.WriteLine(result);
    }
}
False

注意点

  • array引数にnullを渡した場合や、match引数にnullを渡した場合は、ArgumentNullExceptionがスローされます。
  • 空の配列を渡した場合、判定すべき要素が存在しないため、trueが返されます。
  • 文字列型など任意の型の配列にも利用できる汎用的なメソッドです。

このようにTrueForAll()メソッドを使えば、foreach文やfor文でループ処理を記述することなく、宣言的で読みやすいコードによって「全要素が条件を満たすか」の判定を実現できます。

  1. C#のCompareTo()メソッドの使い方を解説

    C#では、2つの値を比較する際にCompareTo()メソッドを使用します。このメソッドは、呼び出し元の値と引数で渡した値を比較し、その大小関係を整数値として返します。CompareTo()メソッドの戻り値CompareTo()メソッドの戻り値は以下の3パターンです。0 = 両方の値が等しい場合1 = 呼び出し元の値が引数の値より大きい場合(第2の数値が小さい)-1 = 呼び出し元の値が引数の値より小さい場合(第1の数値が小さい)CompareTo()メソッドの実装例それでは、C#でCompareTo()メソッドを実装するサンプルコードを見てみましょう。ここでは、同じ値を持つ2つのint型変数

  2. RubyのArray#zipメソッド徹底解説!2つの配列をスマートに結合する方法

    2つの配列を要素ごとに比較して、その違いを見つけたいと思ったことはありませんか? あるいは、各インデックスごとに最大の数値を求めたい、キーのリストと値のリストを組み合わせてハッシュを作りたい――そんな場面にも出会うことがあるでしょう。 …これを「面倒な方法」で実装すると、次のようなコードになります。 例:冗長な書き方 a = [1,2,3,4,5] b = [1,2,3,6,8] c = a.map.with_index { |_, idx| [a[idx], b[idx]] } # [[1, 1], [2, 2], [3, 3], [4, 6], [5, 8]] 確かに動作はしますが