English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
ActionはSystemネームスペースで定義されたデリゲートタイプです。ActionタイプデリゲートはFuncデリゲートと同じですが、Actionデリゲートは値を返しません。別の言い方をすると、Actionデリゲートはvoid返り値を持つメソッドと一緒に使用できます。
Action<T>は.NET Frameworkに組み込まれた汎用デリゲートであり、Action<T>デリゲートを使用してメソッドをパラメータ形式で渡すことができます。カスタムデリゲートを明示的に宣言する必要はありません。エンケapsulatingメソッドはこのデリゲートのメソッドシグネチャに対応する必要があります。つまり、エンケapsulatingメソッドは引数として値で渡される引数を持つ必要があり、戻り値を持たない必要があります。
例えば、以下のデリゲートはint値をプリントします。
public delegate void Print(int val); static void ConsolePrint(int i) { Console.WriteLine(i); } static void Main(string[] args) { Print prnt = ConsolePrint; prnt(10); }
10
上で定義したPrintデリゲートの代わりにActionデリゲートを使用できます。例えば:
static void ConsolePrint(int i) { Console.WriteLine(i); } static void Main(string[] args) { Action<int> printActionDel = ConsolePrint; printActionDel(10); }
newキーワードを使用したり、直接メソッドを割り当てることでActionデリゲートを初期化できます:
Action<int> printActionDel = ConsolePrint; //または Action<int> printActionDel = new Action<int>(ConsolePrint);
Actionデリゲートは最大で16異なるタイプの入力引数を持ちます。
匿名メソッドはActionデリゲートに割り当てられます。例えば:
static void Main(string[] args) { Action<int> printActionDel = delegate(int i) { Console.WriteLine(i); }; printActionDel(10); }
10
ラムダ式はActionデリゲートとともに使用できます:
static void Main(string[] args) { Action<int> printActionDel = i => Console.WriteLine(i); printActionDel(10); }
したがって、Actionデリゲートの返値を使用しない方法を使用することができます。
Actionデリゲートは少なくとも0個、多くても16引数を持ち、値を返さない。
Action は、引数を持ちない、値を返さないデリゲートを示します。
Action<int, string> は、int、stringの引数を持ち、値を返さないデリゲートを示します。
Action<int, string, bool> は、int、string、boolの引数を持ち、値を返さないデリゲートを示します。
Action<int, int, int, int> は、引数を4つ受け取り、何も返さないことを示します。4個の int 型パラメータがあり、返り値のないデリゲートです。
デリゲートを簡単かつ迅速に定義します。
コードを短くします。
アプリケーション全体で互換性のあるデータ型です。
Action デリゲートは Func デリゲートと同じですが、Action デリゲートは何も返さないため、返り値の型は void でなければなりません。
Action デリゲートは0から16個の入力パラメータがあります。
Action デリゲートは匿名メソッドやラムダ式と一緒に使用できます。