C#でAction、Func、およびPredicateデリゲートを操作する方法

デリゲートは、デリゲートと同じシグネチャを持つメソッドを参照できるタイプセーフな関数ポインタです。デリゲートは、コールバックメソッドを定義し、イベント処理を実装するために使用され、「delegate」キーワードを使用して宣言されます。単独で表示したり、クラス内にネストしたりできるデリゲートを宣言できます。

FuncおよびActionデリゲートとは何ですか?それらはどのように使用できますか?

FuncデリゲートとActionデリゲートの基本的な違いは、前者は値を返すデリゲートに使用されますが、後者は戻り値がないデリゲートに使用できることです。

Funcは、1つ以上の引数を受け入れ、値を返すメソッドを指すデリゲートです。アクションは、1つ以上の引数を受け入れるが、値を返さないメソッドを指すデリゲートです。つまり、デリゲートがvoidを返すメソッドを指している場合は、アクションを使用する必要があります。

述語は、1つ以上の汎用パラメーターを受け入れ、ブール値を返すデリゲートです。これは、Funcのようなものであると見なすことができます。述語デリゲートは通常、一連の基準に基づいて一部のデータに対して検索操作を実行するために使用されます。

C#でのプログラミングアクションデリゲート

C#のデリゲートを利用して、イベントを実装し、メソッドをコールバックできます。C#のデリゲートは、C ++の関数ポインターに似ていますが、C#のデリゲートはタイプセーフです。メソッドをパラメーターとしてデリゲートに渡して、デリゲートがメソッドをポイントできるようにすることができます。

次のコードスニペットは、アクションデリゲートを使用するための構文を示しています。

アクション

次のコードリストは、アクションデリゲートの使用方法を示しています。このコードスニペットを実行すると、「Hello !!!」という単語が出力されます。コンソールウィンドウで。

static void Main(string [] args)

        {{

            アクションaction = new Action(Display);

            action( "Hello !!!");

            Console.Read();

        }

static void Display(文字列メッセージ)

        {{

            Console.WriteLine(メッセージ);

        }

C#でのFuncデリゲートのプログラミング

ここで、C#でFuncデリゲートを操作する方法を理解しましょう。Funcデリゲートの構文は次のとおりです。

機能

次のコードスニペットは、C#でFuncデリゲートを使用する方法を示しています。Hraの値(基本給の40%として計算)を出力します。基本給は引数として渡されます。

static void Main(string [] args)

        {{

            Func func = new Func(CalculateHra);

            Console.WriteLine(func(50000));

            Console.Read();

        }

        static doubleCalculateHra(intbasic)

        {{

            return(double)(basic * .4);

        }

前述のコードスニペットのFuncデリゲートの宣言の2番目のパラメーターは、デリゲートが指すメソッドの戻り値の型を表すことに注意してください。この例では、計算されたHra値がdoubleとして返されます。

C#での述語デリゲートのプログラミング

述語デリゲートは通常、コレクションまたはデータセット内のアイテムを検索するために使用されます。述語デリゲートの構文は次のとおりです。

述語

述語は基本的にFuncと同等であることに注意してください。

Customerという名前の次のエンティティクラスについて考えてみます。

クラス顧客

    {{

        public int Id {get; セットする; }

        public string FirstName {get; セットする; }

        パブリック文字列LastName {get; セットする; }

        パブリック文字列アドレス{取得; セットする; }

        public string City {get; セットする; }

        パブリック文字列状態{取得; セットする; }

        パブリック文字列国{取得; セットする; }

    }

次に、顧客のリストを作成し、Customerタイプのオブジェクトをそのリストに格納します。

 リストcustList = new List();

            custList.Add(new Customer {Id = 1、FirstName = "Joydip"、LastName = "Kanjilal"、State = "Telengana"、City = "Hyderabad"、Address = "Begumpet"、Country = "India"});

            custList.Add(new Customer {Id = 2、FirstName = "Steve"、LastName = "Jones"、State = "OA"、City = "New York"、Address = "Lake Avenue"、Country = "US"}) ;

以下は、述語デリゲートを使用してデータを検索する方法を示す完全なコードリストです。

static void Main(string[] args)

        {

            List custList = new List();

            custList.Add(new Customer { Id = 1, FirstName = "Joydip", LastName = "Kanjilal", State = "Telengana", City = "Hyderabad", Address = "Begumpet", Country = "India" });

            custList.Add(new Customer { Id = 2, FirstName = "Steve", LastName = "Jones", State = "OA", City = "New York", Address = "Lake Avenue", Country = "US" });

            Predicate hydCustomers = x => x.Id == 1;

            Customer customer = custList.Find(hydCustomers);

            Console.WriteLine(customer.FirstName);

            Console.Read();

        }

When the above code snippet is executed, the name “Joydip” will be displayed in the console window.

C#でさらに多くのことを行う方法:

  • C#で抽象クラスとインターフェイスを使用する場合
  • C#でAutoMapperを操作する方法
  • C#でラムダ式を使用する方法
  • C#でAction、Func、およびPredicateデリゲートを操作する方法
  • C#でデリゲートを操作する方法
  • C#で簡単なロガーを実装する方法
  • C#で属性を操作する方法
  • C#でlog4netを操作する方法
  • C#でリポジトリデザインパターンを実装する方法
  • C#でリフレクションを操作する方法
  • C#でfilesystemwatcherを操作する方法
  • C#でレイジー初期化を実行する方法
  • C#でMSMQを操作する方法
  • C#で拡張メソッドを操作する方法
  • C#でラムダ式を使用する方法
  • C#でvolatileキーワードを使用する場合
  • C#でyieldキーワードを使用する方法
  • C#でポリモーフィズムを実装する方法
  • C#で独自のタスクスケジューラを構築する方法
  • C#でRabbitMQを操作する方法
  • C#でタプルを操作する方法
  • C#での仮想メソッドと抽象メソッドの調査