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#での仮想メソッドと抽象メソッドの調査