English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C#には組み込みのジェネリックデリゲート型FuncとActionが含まれており、そのため、ほとんどの場合、カスタムデリゲートを手動で定義する必要はありません。
FuncはSystem命名空間に含まれるジェネリックデリゲートです。ゼロ個または複数の入力パラメータを持ち、 out パラメータ。最後のパラメータはoutパラメータとして見なされます。
Funcデリゲートは返り値を持つデリゲートを表します。
FuncはSystem命名空間でinパラメータとoutパラメータを定義しています。 のデリゲート、以下の通りです:
namespace System { public delegate TResult Func<in T, out TResult>(T arg); }
尖括号中的最後の引数<>は返り値の型とされ、他の引数は入力パラメータの型とされます。以下の図を参照してください。
2つの引数と1つの出力引数を持つFuncデリゲートは以下のようになります。
以下のFuncデリゲートは、2つのint型の引数を受け取り、int型の値を返します:
Func<int, int, int> sum;
上記のfuncデリゲートに、2つの引数を持つメソッドを割り当てることができます。int引数を持ち、その値を戻り値として返すint値。
class Program { static int Sum(int x, int y) { return x + y; } static void Main(string[] args) { Func<int,int, int> add = Sum; int result = add(10, 10); Console.WriteLine(result); } }
20
Funcデリゲートのタイプは、0から16個の異なるタイプの引数がありますが、結果を表すout引数を含める必要があります。例えば、以下のFuncデリゲートは、引数がなく、out引数のみを含んでいます。
Func<int> getRandomNumber;
Funcは少なくとも0個の引数、多くても16個の引数があり、戻り値は汎型で指定。戻り値はvoidであってはなりません。
Func<int> は、引数がなく、戻り値がint型のデリゲート。
Func<object,string,int> は、引数としてobject, stringを指定し、戻り値がint型のデリゲート。
Func<object,string,int> は、引数としてobject, stringを指定し、戻り値がint型のデリゲート。
Func<T1,T2,,T3,int> は、引数としてTを指定します1,T2,,T3(汎型),戻り値がint型のデリゲート。
delegateキーワードを使用して、匿名メソッドをFuncデリゲートに割り当てることができます。
Func<int> getRandomNumber = delegate() { Random rnd = new Random(); return rnd.Next(1, 100); };
Funcデリゲートもまた、以下のようにlambda表現式と一緒に使用できます:
Func<int> getRandomNumber = () => new Random().Next()1, 100); //または Func<int, int, int> Sum = (x, y) => x + y;
Func は内蔵デリゲート型です。
Func デリゲート型は値を返す必要があります。
Func デリゲート型はゼロから16個の入力パラメータがあります。
Func デリゲートは ref と out パラメータを許可しません。
Func デリゲート型は匿名メソッドやlambda式と一緒に使用できます。