Funcの宣言と使用方法<br>依頼

2328 ワード

in T1
このパッケージングを依頼するメソッドの最初のパラメータタイプ.
このタイプのパラメータは逆です.すなわち、指定したタイプまたは派生度の低いタイプを使用できます.コヒーレントおよびインバータの詳細については、汎用型におけるコヒーレントとインバータを参照してください.
in
T2
このパッケージングを依頼するメソッドの2番目のパラメータタイプ.
in
T3
このパッケージングを依頼するメソッドの3番目のパラメータタイプ.
out
TResult
この委任パッケージのメソッドの戻り値タイプ.
このタイプのパラメータはコヒーレントです.すなわち、指定したタイプまたは派生度の高いタイプを使用できます.コヒーレントおよびインバータの詳細については、汎用型におけるコヒーレントとインバータを参照してください.
パラメータ
arg1
タイプ:
T1
このパッケージングを依頼するメソッドの最初のパラメータ.
arg2
タイプ:
T2
このパッケージングを依頼するメソッドの2番目のパラメータ.
arg3
タイプ:
T3
このパッケージングを依頼するメソッドの3番目のパラメータ.
戻り値のタイプ:
TResult
この委任パッケージのメソッドの戻り値.
コメント
この委任を使用すると、カスタム委任を明示的に宣言することなく、パラメータ形式で渡す方法を表すことができます.カプセル化されたメソッドは、この委任定義のメソッド署名に対応する必要があります.すなわち、カプセル化方法は、値を介して伝達される3つのパラメータを有し、値を返さなければならない.
 
この例では、Func<T1, T2, TResult>変数を宣言し、String値とInt32値をパラメータとして使用するlambda式に割り当てます.Stringパラメータの長さがInt32パラメータの値に等しい場合、lambda式はtrueを返します.その後、クエリでこのメソッドをカプセル化する委任を使用して、文字列配列内の文字列をフィルタします.
 
using System;

using System.Collections.Generic;

using System.Linq;



public class Func3Example

{

   public static void Main()

   {

      Func<String, int, bool> predicate = (str, index) => str.Length == index;



      String[] words = { "orange", "apple", "Article", "elephant", "star", "and" };

      IEnumerable<String> aWords = words.Where(predicate).Select(str => str);



      foreach (String word in aWords)

         Console.WriteLine(word);

   }

}






.