C〓〓はアクション、アクション、Fnc、Predicateを依頼します.

2654 ワード

元のブログリンク:http://www.cnblogs.com/maitian-lf/p/3671782.html
     CLR環境の中で、私達にいくつかのよく使う委託アクション、アクション、Fun、Prodcateを内蔵しています.普通、私達は依頼する時に、できるだけ自分でもう一つの依頼を定義しないでください.システムに内蔵されているこれらはすでに大部分の需要を満たしています.コードを合わせて規定します.
1、アクション
     アクションパッケージの方法はパラメータなしでリターン値なしで、プロトタイプは以下のことを宣言します.  
public delegate void Action();
使い方は以下の通りです
public void Alert()
 {
    Console.WriteLine("      ");
 }
 
 Action t = new Action(Alert); //       Action   
 t();
2、アクション
      アクションは、アクションの一般的な実装であり、リターン値でもないが、最大16のパラメータが入ることができ、2つのパラメータの宣言の原型は:
public delegate void Action(T1 arg1, T2 arg2);
の使い方は以下の通りです.
private void ShowResult(int a, int b)
{
    Console.WriteLine(a + b);
}

Action t = new Action(ShowResult);//            
t(2, 3);
3、Fun
     Funnc依頼は常に戻り値があります.戻り値の種類はパラメータの中で一番最後です.一つのパラメータに入ることもできます.最大16個のパラメータに入ることもできます.二つのパラメータは一つの戻り値の宣言の原型は以下の通りです.
public delegate TResult Func(T1 arg1, T2 arg2);
の使い方は以下の通りです.
public bool Compare(int a, int b)
{
    return a > b;
}

Func t = new Func(Compare);//    int  ,  bool 
bool result = t(2, 3);
4、Predicate
     Predicate依頼は、条件のセットを定義し、指定されたオブジェクトがこれらの条件に適合するかどうかを決定する方法を表し、戻り値は常にbookタイプであり、原型は次のように宣言される.
public delegate bool Predicate(T obj);
の使い方は以下の通りです.
public bool Match(int val)
{
    return val > 60;
}

Predicate t = new Predicate(Match);   //        
int[] arr = { 13, 45, 26, 98, 3, 56, 72, 24 };            
int first = Array.Find(arr, t);                 //       60      
直接Lambod表現で方法を委託に定義します.コードは以下の通りです.
Predicate t = val => { return val > 60;};   //        
int[] arr = { 13, 45, 26, 98, 3, 56, 72, 24 };            
int first = Array.Find(arr, t);                  //       60      
では、Aray配列クラスのfind()の2番目のパラメータが委託タイプであり、arrの要素がPrdicateに次々に伝達され、条件に一致する要素が戻り値に保存されることを示している.
上記の場合、実際には、明示的にPrdicateを作成する必要はありません.コンパイラは、コンテキストで正しい依頼を認識し、自動的に依頼を作成します.したがって、Aray.Find()方法に関しては、委託パラメータの使用は、次のようになります.
public bool Match(int val)
{
    return val > 60;
}

int[] arr = { 13, 45, 26, 98, 3, 56, 72, 24 };            
int first = Array.Find(arr, Match);      //      
または:
int[] arr = { 13, 45, 26, 98, 3, 56, 72, 24 };            
int first = Array.Find(arr,val => { return val > 60;});           //