Predicate<T>

引数があって、戻り値がboolの場合、Predicate<T>を使うといい。

https://docs.microsoft.com/ja-jp/dotnet/api/system.predicate-1?view=netframework-2.0

ラムダ式のトピックで作ったファイルチェックデリゲートをPredicate<T>に置き換える。
まず、ファイルチェックデリゲートのプログラムだけを書くと、

// 名前空間の登録
using System;       // 共通データ型と基本クラス(System名前空間)
using System.IO;    // ファイル入出力とデータストリーム(System.IO名前空間)

// メインクラス
class MainClass // MainClassの定義
{

    // デリゲートの宣言
    delegate bool FileCheckDelegate(string filename);   // ファイルが存在するかをチェックする関数を持つデリゲート.

    // メインメソッド
    static void Main()  // Mainメソッドの定義
    {

        // ファイルチェックデリゲートの生成.(処理内容をラムダ式で定義.)
        FileCheckDelegate fcd = (filename) =>
        {

            // ファイルが存在するかをチェック.
            if (File.Exists(filename))  // File.Existsでfilenameなるファイルが存在するかチェック.
            {

                // 存在する場合.
                Console.WriteLine(filename + " is Exists."); // "Exists"と出力.
                return true;    // trueを返す.

            }
            else
            {

                // 存在しない場合.
                Console.WriteLine(filename + " is not Exists."); // "not Exists"と出力.
                return false;    // falseを返す.

            }

        };

        // "test.txt"があるかどうかチェック.
        if (fcd("test.txt"))    // fcdに"test.txt"を渡す.
        {

            // OK
            Console.WriteLine("Check OK."); // "Check OK."と出力.

        }
        else
        {

            // NG
            Console.WriteLine("Check NG."); // "Check NG."と出力.

        }

    }

}

で、ここからデリゲート型の宣言を削除し、定義済みデリゲートPredicate<T>を使うと、

こうなる。

test.txt is Exists.
Check OK.
続行するには何かキーを押してください . 

ここは変わらない。

Sample/dotnet/Predicate_T/Predicate_T/src/Predicate_T_ at master · bg1bgst333/Sample · GitHub